Skip to content

Commit 7787581

Browse files
committed
refactor: strengthen kill input check
continues #1339
1 parent 6d611de commit 7787581

File tree

8 files changed

+24
-12
lines changed

8 files changed

+24
-12
lines changed

.size-limit.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
"README.md",
2020
"LICENSE"
2121
],
22-
"limit": "128.25 kB",
22+
"limit": "128.30 kB",
2323
"brotli": false,
2424
"gzip": false
2525
},
@@ -33,7 +33,7 @@
3333
"build/globals.js",
3434
"build/deno.js"
3535
],
36-
"limit": "816.05 kB",
36+
"limit": "816.10 kB",
3737
"brotli": false,
3838
"gzip": false
3939
},
@@ -66,7 +66,7 @@
6666
"README.md",
6767
"LICENSE"
6868
],
69-
"limit": "873.60 kB",
69+
"limit": "873.65 kB",
7070
"brotli": false,
7171
"gzip": false
7272
}

build/core.cjs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1109,8 +1109,8 @@ function cd(dir) {
11091109
}
11101110
function kill(_0) {
11111111
return __async(this, arguments, function* (pid, signal = $.killSignal || SIGTERM) {
1112-
if (!/^\d+$/.test(pid)) throw new Fail(`Invalid pid: ${pid}`);
1113-
pid = pid + "";
1112+
if (typeof pid !== "number" && typeof pid !== "string" || !/^\d+$/.test(pid))
1113+
throw new Fail(`Invalid pid: ${pid}`);
11141114
$.log({ kind: "kill", pid, signal, verbose: !$.quiet && $.verbose });
11151115
if (import_node_process2.default.platform === "win32" && (yield new Promise((resolve) => {
11161116
import_node_child_process.default.exec(`taskkill /pid ${pid} /t /f`, (err) => resolve(!err));

build/index.cjs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ var import_vendor = require("./vendor.cjs");
5454

5555
// src/versions.ts
5656
var versions = {
57-
zx: "8.8.1",
57+
zx: "8.8.2",
5858
chalk: "5.6.2",
5959
depseek: "0.4.3",
6060
dotenv: "0.2.3",

package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "zx",
3-
"version": "8.8.2",
3+
"version": "8.8.3",
44
"description": "A tool for writing better scripts",
55
"type": "module",
66
"main": "./build/index.cjs",

src/core.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1041,8 +1041,11 @@ export async function kill(
10411041
pid: number | `${number}`,
10421042
signal = $.killSignal || SIGTERM
10431043
) {
1044-
if (!/^\d+$/.test(pid as string)) throw new Fail(`Invalid pid: ${pid}`)
1045-
pid = (pid + '') as `${number}`
1044+
if (
1045+
(typeof pid !== 'number' && typeof pid !== 'string') ||
1046+
!/^\d+$/.test(pid as string)
1047+
)
1048+
throw new Fail(`Invalid pid: ${pid}`)
10461049

10471050
$.log({ kind: 'kill', pid, signal, verbose: !$.quiet && $.verbose })
10481051
if (

src/versions.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
// limitations under the License.
1414

1515
export const versions: Record<string, string> = {
16-
zx: '8.8.1',
16+
zx: '8.8.2',
1717
chalk: '5.6.2',
1818
depseek: '0.4.3',
1919
dotenv: '0.2.3',

test/core.test.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1651,6 +1651,15 @@ describe('core', () => {
16511651
await assert.rejects(() => kill(100.1), /Invalid/)
16521652
await assert.rejects(() => kill(null), /Invalid/)
16531653
await assert.rejects(() => kill({}), /Invalid/)
1654+
await assert.rejects(
1655+
() =>
1656+
kill({
1657+
toString() {
1658+
return '12345'
1659+
},
1660+
}),
1661+
/Invalid/
1662+
)
16541663
})
16551664
})
16561665

0 commit comments

Comments
 (0)