diff --git a/scripts/e2e/lib/bundled-plugin-install-uninstall/runtime-smoke.mjs b/scripts/e2e/lib/bundled-plugin-install-uninstall/runtime-smoke.mjs index 7f4f7bac6ed..4c93b4c3ab5 100644 --- a/scripts/e2e/lib/bundled-plugin-install-uninstall/runtime-smoke.mjs +++ b/scripts/e2e/lib/bundled-plugin-install-uninstall/runtime-smoke.mjs @@ -68,7 +68,7 @@ function readPositiveInt(raw, fallback, name) { throw new Error(`invalid ${name}: ${text}`); } const parsed = Number(text); - if (!Number.isInteger(parsed) || parsed <= 0) { + if (!Number.isSafeInteger(parsed) || parsed <= 0) { throw new Error(`invalid ${name}: ${text}`); } return parsed; diff --git a/test/scripts/bundled-plugin-install-uninstall-probe.test.ts b/test/scripts/bundled-plugin-install-uninstall-probe.test.ts index 12c36643b7a..f6bb5c54c46 100644 --- a/test/scripts/bundled-plugin-install-uninstall-probe.test.ts +++ b/test/scripts/bundled-plugin-install-uninstall-probe.test.ts @@ -266,6 +266,14 @@ describe("bundled plugin install/uninstall probe", () => { expect(result.stderr).toContain("invalid bundled plugin runtime index: 1e3"); }); + it("rejects unsafe bundled plugin runtime limit env values", async () => { + await expect( + importRuntimeSmokeWithEnv({ + OPENCLAW_BUNDLED_PLUGIN_RUNTIME_READY_MS: String(Number.MAX_SAFE_INTEGER + 1), + }), + ).rejects.toThrow("invalid OPENCLAW_BUNDLED_PLUGIN_RUNTIME_READY_MS: 9007199254740992"); + }); + it("rejects bundled plugin runtime ports outside the TCP range", async () => { const runtimeSmoke = await import(pathToFileURL(runtimeSmokePath).href); const env = {