From eda43c46de12ed589fdbe62ba0574887cfbb3574 Mon Sep 17 00:00:00 2001 From: Kenta Moriuchi Date: Mon, 3 Jun 2024 10:29:01 +0900 Subject: fix: validate integer values in `Deno.exitCode` setter (#24068) --- runtime/js/30_os.js | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) (limited to 'runtime/js') diff --git a/runtime/js/30_os.js b/runtime/js/30_os.js index 866fad287..f3dfda886 100644 --- a/runtime/js/30_os.js +++ b/runtime/js/30_os.js @@ -22,7 +22,8 @@ import { const { Error, FunctionPrototypeBind, - NumberParseInt, + NumberIsInteger, + RangeError, SymbolFor, TypeError, } = primordials; @@ -102,13 +103,17 @@ function getExitCode() { } function setExitCode(value) { - const code = NumberParseInt(value, 10); - if (typeof code !== "number") { + if (typeof value !== "number") { throw new TypeError( - `Exit code must be a number, got: ${code} (${typeof code}).`, + `Exit code must be a number, got: ${value} (${typeof value})`, ); } - op_set_exit_code(code); + if (!NumberIsInteger(value)) { + throw new RangeError( + `Exit code must be an integer, got: ${value}`, + ); + } + op_set_exit_code(value); } function setEnv(key, value) { -- cgit v1.2.3