Skip to content

Commit 700adae

Browse files
qingminglongsteipete
authored andcommitted
fix(cron): reject sub-millisecond durations
1 parent c757675 commit 700adae

2 files changed

Lines changed: 4 additions & 2 deletions

File tree

src/cli/cron-cli/shared.test.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -347,6 +347,8 @@ describe("parseDurationMs", () => {
347347

348348
it("rejects non-positive and malformed durations", () => {
349349
expect(parseDurationMs("0s")).toBeNull();
350+
expect(parseDurationMs("0.5ms")).toBeNull();
351+
expect(parseDurationMs("0.001ms")).toBeNull();
350352
expect(parseDurationMs("-5s")).toBeNull();
351353
expect(parseDurationMs("abc")).toBeNull();
352354
expect(parseDurationMs("")).toBeNull();

src/cli/cron-cli/shared.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -227,9 +227,9 @@ export function parseDurationMs(input: string): number | null {
227227
? 3_600_000
228228
: 86_400_000;
229229
const result = Math.floor(n * factor);
230-
if (!Number.isFinite(result)) {
230+
if (!Number.isFinite(result) || result <= 0) {
231231
// A finite mantissa can still overflow to Infinity for a large unit (e.g. a long
232-
// pure-digit string with "d"); reject it instead of returning Infinity ms.
232+
// pure-digit string with "d"); tiny positive values can also floor to 0ms.
233233
return null;
234234
}
235235
return result;

0 commit comments

Comments
 (0)