Skip to content

Commit deee138

Browse files
committed
fix: handle sanitising better, add tests
1 parent ff73dbf commit deee138

File tree

2 files changed

+35
-7
lines changed

2 files changed

+35
-7
lines changed

index.js

+12-7
Original file line numberDiff line numberDiff line change
@@ -5,19 +5,24 @@ var spawn = childProcess.spawn;
55
var exec = childProcess.exec;
66

77
module.exports = function (pid, signal, callback) {
8-
if (typeof pid !== "number") {
9-
throw new Error("pid must be a number");
8+
if (typeof signal === 'function' && callback === undefined) {
9+
callback = signal;
10+
signal = undefined;
11+
}
12+
13+
pid = parseInt(pid);
14+
if (Number.isNaN(pid)) {
15+
if (callback) {
16+
return callback(new Error("pid must be a number"));
17+
} else {
18+
throw new Error("pid must be a number");
19+
}
1020
}
1121

1222
var tree = {};
1323
var pidsToProcess = {};
1424
tree[pid] = [];
1525
pidsToProcess[pid] = 1;
16-
17-
if (typeof signal === 'function' && callback === undefined) {
18-
callback = signal;
19-
signal = undefined;
20-
}
2126

2227
switch (process.platform) {
2328
case 'win32':

test/test.js

+23
Original file line numberDiff line numberDiff line change
@@ -31,4 +31,27 @@ describe('kill()', function(){
3131
return done()
3232
})
3333
})
34+
35+
it('should reject invalid pid', function(done){
36+
var p = fork('./test/spin')
37+
assert.ok(p.pid)
38+
39+
kill('rm -rf /dev/null', function(err) {
40+
assert.ok(typeof err === 'object')
41+
return done()
42+
})
43+
})
44+
45+
it('should reject invalid pids even if no callback', function(done){
46+
var p = fork('./test/spin')
47+
assert.ok(p.pid)
48+
49+
try {
50+
kill('rm -rf /dev/null')
51+
assert.fail('should have thrown')
52+
} catch (err) {
53+
assert.ok(typeof err === 'object')
54+
return done();
55+
}
56+
})
3457
})

0 commit comments

Comments
 (0)