src: add handle check to spawn_sync
This commit verifies that the child process handle is of the correct type before trying to close it in CloseHandlesAndDeleteLoop(). This catches the case where input validation failed, and the child process was never actually spawned. Fixes: https://github.com/nodejs/node/issues/8096 Fixes: https://github.com/nodejs/node/issues/8539 Refs: https://github.com/nodejs/node/issues/9722 PR-URL: https://github.com/nodejs/node/pull/8312 Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
This commit is contained in:
parent
c65d55f087
commit
b374ee8c3d
@ -501,7 +501,12 @@ void SyncProcessRunner::CloseHandlesAndDeleteLoop() {
|
||||
// Close the process handle when ExitCallback was not called.
|
||||
uv_handle_t* uv_process_handle =
|
||||
reinterpret_cast<uv_handle_t*>(&uv_process_);
|
||||
if (!uv_is_closing(uv_process_handle))
|
||||
|
||||
// Close the process handle if it is still open. The handle type also
|
||||
// needs to be checked because TryInitializeAndRunLoop() won't spawn a
|
||||
// process if input validation fails.
|
||||
if (uv_process_handle->type == UV_PROCESS &&
|
||||
!uv_is_closing(uv_process_handle))
|
||||
uv_close(uv_process_handle, nullptr);
|
||||
|
||||
// Give closing watchers a chance to finish closing and get their close
|
||||
|
Loading…
x
Reference in New Issue
Block a user