diff --git a/src/node.cc b/src/node.cc index 9a85991a295aeb..51e97e0b8efadb 100644 --- a/src/node.cc +++ b/src/node.cc @@ -2394,11 +2394,10 @@ void DebugProcess(const FunctionCallbackInfo& args) { return env->ThrowError("Invalid number of arguments."); } - pid_t pid; - int r; + CHECK(args[0]->IsNumber()); + pid_t pid = args[0].As()->Value(); + int r = kill(pid, SIGUSR1); - pid = args[0]->IntegerValue(); - r = kill(pid, SIGUSR1); if (r != 0) { return env->ThrowErrnoException(errno, "kill"); } @@ -2416,7 +2415,6 @@ static int GetDebugSignalHandlerMappingName(DWORD pid, wchar_t* buf, static void DebugProcess(const FunctionCallbackInfo& args) { Environment* env = Environment::GetCurrent(args); Isolate* isolate = args.GetIsolate(); - DWORD pid; HANDLE process = nullptr; HANDLE thread = nullptr; HANDLE mapping = nullptr; @@ -2428,7 +2426,8 @@ static void DebugProcess(const FunctionCallbackInfo& args) { goto out; } - pid = (DWORD) args[0]->IntegerValue(); + CHECK(args[0]->IsNumber()); + DWORD pid = args[0].As()->Value(); process = OpenProcess(PROCESS_CREATE_THREAD | PROCESS_QUERY_INFORMATION | PROCESS_VM_OPERATION | PROCESS_VM_WRITE | diff --git a/src/node_buffer.cc b/src/node_buffer.cc index 7c4c0d9f657b24..465c42047911b0 100644 --- a/src/node_buffer.cc +++ b/src/node_buffer.cc @@ -173,7 +173,8 @@ inline MUST_USE_RESULT bool ParseArrayIndex(Local arg, return true; } - int64_t tmp_i = arg->IntegerValue(); + CHECK(arg->IsNumber()); + int64_t tmp_i = arg.As()->Value(); if (tmp_i < 0) return false; @@ -769,7 +770,7 @@ void IndexOfString(const FunctionCallbackInfo& args) { SPREAD_BUFFER_ARG(args[0], ts_obj); Local needle = args[1].As(); - int64_t offset_i64 = args[2]->IntegerValue(); + int64_t offset_i64 = args[2].As()->Value(); bool is_forward = args[4]->IsTrue(); const char* haystack = ts_obj_data; @@ -885,7 +886,7 @@ void IndexOfBuffer(const FunctionCallbackInfo& args) { THROW_AND_RETURN_UNLESS_BUFFER(Environment::GetCurrent(args), args[1]); SPREAD_BUFFER_ARG(args[0], ts_obj); SPREAD_BUFFER_ARG(args[1], buf); - int64_t offset_i64 = args[2]->IntegerValue(); + int64_t offset_i64 = args[2].As()->Value(); bool is_forward = args[4]->IsTrue(); const char* haystack = ts_obj_data; @@ -955,7 +956,7 @@ void IndexOfNumber(const FunctionCallbackInfo& args) { SPREAD_BUFFER_ARG(args[0], ts_obj); uint32_t needle = args[1].As()->Value(); - int64_t offset_i64 = args[2]->IntegerValue(); + int64_t offset_i64 = args[2].As()->Value(); bool is_forward = args[3]->IsTrue(); int64_t opt_offset = IndexOfOffset(ts_obj_length, offset_i64, 1, is_forward); diff --git a/src/node_crypto.cc b/src/node_crypto.cc index 851dc656742081..203d6b4aacfc17 100644 --- a/src/node_crypto.cc +++ b/src/node_crypto.cc @@ -979,15 +979,16 @@ void SecureContext::SetDHParam(const FunctionCallbackInfo& args) { void SecureContext::SetOptions(const FunctionCallbackInfo& args) { SecureContext* sc; ASSIGN_OR_RETURN_UNWRAP(&sc, args.Holder()); + int64_t val; - if (args.Length() != 1 || !args[0]->IntegerValue()) { + if (args.Length() != 1 || + !args[0]->IntegerValue(args.GetIsolate()->GetCurrentContext()).To(&val)) { return THROW_ERR_INVALID_ARG_TYPE( sc->env(), "Options must be an integer value"); } - SSL_CTX_set_options( - sc->ctx_.get(), - static_cast(args[0]->IntegerValue())); // NOLINT(runtime/int) + SSL_CTX_set_options(sc->ctx_.get(), + static_cast(val)); // NOLINT(runtime/int) } diff --git a/src/node_http_parser.cc b/src/node_http_parser.cc index be5937f71dac3d..a4b92cbb20bfd1 100644 --- a/src/node_http_parser.cc +++ b/src/node_http_parser.cc @@ -289,12 +289,16 @@ class Parser : public AsyncWrap, public StreamListener { MaybeLocal head_response = MakeCallback(cb.As(), arraysize(argv), argv); - if (head_response.IsEmpty()) { + int64_t val; + + if (head_response.IsEmpty() || !head_response.ToLocalChecked() + ->IntegerValue(env()->context()) + .To(&val)) { got_exception_ = true; return -1; } - return head_response.ToLocalChecked()->IntegerValue(); + return val; } diff --git a/src/process_wrap.cc b/src/process_wrap.cc index 2ecc470e1e9f07..252bb9867fd6c2 100644 --- a/src/process_wrap.cc +++ b/src/process_wrap.cc @@ -132,8 +132,9 @@ class ProcessWrap : public HandleWrap { options->stdio[i].data.stream = stream; } else { Local fd_key = env->fd_string(); - int fd = static_cast( - stdio->Get(context, fd_key).ToLocalChecked()->IntegerValue()); + Local fd_value = stdio->Get(context, fd_key).ToLocalChecked(); + CHECK(fd_value->IsNumber()); + int fd = static_cast(fd_value.As()->Value()); options->stdio[i].flags = UV_INHERIT_FD; options->stdio[i].data.fd = fd; } diff --git a/src/tcp_wrap.cc b/src/tcp_wrap.cc index f41a2ad5540b76..386f84bd33f407 100644 --- a/src/tcp_wrap.cc +++ b/src/tcp_wrap.cc @@ -207,7 +207,10 @@ void TCPWrap::Open(const FunctionCallbackInfo& args) { ASSIGN_OR_RETURN_UNWRAP(&wrap, args.Holder(), args.GetReturnValue().Set(UV_EBADF)); - int fd = static_cast(args[0]->IntegerValue()); + int64_t val; + if (!args[0]->IntegerValue(args.GetIsolate()->GetCurrentContext()).To(&val)) + return; + int fd = static_cast(val); int err = uv_tcp_open(&wrap->handle_, fd); if (err == 0)