From b8ffeee7d6ab0c690e3bcf6f2e6c976f9336e99a Mon Sep 17 00:00:00 2001 From: anantvardhanpandey Date: Tue, 28 Jul 2026 14:19:08 +0530 Subject: [PATCH] fix(audit): add 's' unit support to sleep-polling-loop detector (#522) --- __tests__/audit/detectors.test.ts | 6 ++++++ src/audit/detectors/sleep-polling-loop.ts | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/__tests__/audit/detectors.test.ts b/__tests__/audit/detectors.test.ts index 0df1aef5..f957ce56 100644 --- a/__tests__/audit/detectors.test.ts +++ b/__tests__/audit/detectors.test.ts @@ -100,6 +100,9 @@ describe("sleep-polling-loop", () => { it("matches `sleep 60`", () => { expect(sleepPollingLoop.detect(bash("sleep 60"), {})).not.toBeNull(); }); + it("matches `sleep 30s`", () => { + expect(sleepPollingLoop.detect(bash("sleep 30s"), {})).not.toBeNull(); + }); it("matches `sleep 5m`", () => { expect(sleepPollingLoop.detect(bash("sleep 5m"), {})).not.toBeNull(); }); @@ -111,6 +114,9 @@ describe("sleep-polling-loop", () => { it("does not match `sleep 1`", () => { expect(sleepPollingLoop.detect(bash("sleep 1"), {})).toBeNull(); }); + it("does not match `sleep 5s`", () => { + expect(sleepPollingLoop.detect(bash("sleep 5s"), {})).toBeNull(); + }); }); describe("find-from-root", () => { diff --git a/src/audit/detectors/sleep-polling-loop.ts b/src/audit/detectors/sleep-polling-loop.ts index c701f0f8..248dadd2 100644 --- a/src/audit/detectors/sleep-polling-loop.ts +++ b/src/audit/detectors/sleep-polling-loop.ts @@ -20,7 +20,7 @@ export const sleepPollingLoop: Detector = { return { example: cmd.replace(/\s+/g, " ").trim().slice(0, 160) }; } // Standalone long sleep. parseFloat so `sleep 0.5m` (= 30s) isn't dropped. - const match = /\bsleep\s+(\d+(?:\.\d+)?)(m|h|d)?\b/.exec(cmd); + const match = /\bsleep\s+(\d+(?:\.\d+)?)(s|m|h|d)?\b/.exec(cmd); if (match) { const n = parseFloat(match[1]); const unit = match[2] ?? "s";