From 2ba9ccc1ab25e5c631afcbb12b53f4545ca7f750 Mon Sep 17 00:00:00 2001 From: Nayeem Rahman Date: Thu, 11 May 2023 13:53:45 +0100 Subject: fix(runtime): `ChildProcess::kill()` doesn't require additional perms (#15339) Fixes #15217. --- runtime/js/40_process.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'runtime/js/40_process.js') diff --git a/runtime/js/40_process.js b/runtime/js/40_process.js index 2a5ac86bf..664a4b303 100644 --- a/runtime/js/40_process.js +++ b/runtime/js/40_process.js @@ -200,6 +200,7 @@ function collectOutput(readableStream) { class ChildProcess { #rid; #waitPromiseId; + #waitComplete = false; #unrefed = false; #pid; @@ -268,8 +269,8 @@ class ChildProcess { const waitPromise = core.opAsync("op_spawn_wait", this.#rid); this.#waitPromiseId = waitPromise[promiseIdSymbol]; this.#status = PromisePrototypeThen(waitPromise, (res) => { - this.#rid = null; signal?.[abortSignal.remove](onAbort); + this.#waitComplete = true; return res; }); } @@ -317,10 +318,10 @@ class ChildProcess { } kill(signo = "SIGTERM") { - if (this.#rid === null) { + if (this.#waitComplete) { throw new TypeError("Child process has already terminated."); } - ops.op_kill(this.#pid, signo, "Deno.Child.kill()"); + ops.op_spawn_kill(this.#rid, signo); } ref() { -- cgit v1.2.3