Skip to content

Commit e9901ca

Browse files
committed
Validate issue_number is a finite positive integer in resolveContext
1 parent 133b467 commit e9901ca

2 files changed

Lines changed: 24 additions & 1 deletion

File tree

scripts/corrections/collect-corrections.js

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,12 @@ function resolveContext(payload, sender) {
8282
throw new Error("Missing feedback in payload");
8383
}
8484

85-
return { issueNumber: Number(issueNumber), feedback, sender };
85+
const parsed = Number(issueNumber);
86+
if (!Number.isFinite(parsed) || parsed < 1 || !Number.isInteger(parsed)) {
87+
throw new Error(`Invalid issue_number: ${issueNumber}`);
88+
}
89+
90+
return { issueNumber: parsed, feedback, sender };
8691
}
8792

8893
/**

scripts/corrections/test/collect-corrections.test.ts

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,24 @@ describe("resolveContext", () => {
134134
resolveContext({ issue_number: "1" }, "u"),
135135
).toThrow("Missing feedback");
136136
});
137+
138+
it("throws on non-numeric issue number", () => {
139+
expect(() =>
140+
resolveContext({ issue_number: "abc", feedback: "test" }, "u"),
141+
).toThrow("Invalid issue_number: abc");
142+
});
143+
144+
it("throws on negative issue number", () => {
145+
expect(() =>
146+
resolveContext({ issue_number: "-1", feedback: "test" }, "u"),
147+
).toThrow("Invalid issue_number: -1");
148+
});
149+
150+
it("throws on decimal issue number", () => {
151+
expect(() =>
152+
resolveContext({ issue_number: "1.5", feedback: "test" }, "u"),
153+
).toThrow("Invalid issue_number: 1.5");
154+
});
137155
});
138156

139157
// ---------------------------------------------------------------------------

0 commit comments

Comments
 (0)