Browse Source

child_process: add fork/execFile arg validation

Validate fork/execFile arguments.

Fixes: https://github.com/nodejs/node/issues/2681
Refs: https://github.com/nodejs/node/pull/4508
PR-URL: https://github.com/nodejs/node/pull/7399
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: James M Snell <jasnell@gmail.com>
v7.x
Rich Trott 9 years ago
parent
commit
0548e5d12a
  1. 25
      lib/child_process.js

25
lib/child_process.js

@ -19,15 +19,20 @@ const ChildProcess = exports.ChildProcess = child_process.ChildProcess;
exports.fork = function(modulePath /*, args, options*/) {
// Get options and args arguments.
var options, args, execArgv;
if (Array.isArray(arguments[1])) {
args = arguments[1];
options = util._extend({}, arguments[2]);
} else if (arguments[1] && typeof arguments[1] !== 'object') {
throw new TypeError('Incorrect value of args option');
} else {
args = [];
options = util._extend({}, arguments[1]);
var execArgv;
var options = {};
var args = [];
var pos = 1;
if (Array.isArray(arguments[pos])) {
args = arguments[pos++];
}
if (arguments[pos] != null) {
if (typeof arguments[pos] !== 'object') {
throw new TypeError('Incorrect value of args option');
} else {
options = util._extend({}, arguments[pos++]);
}
}
// Prepare arguments for fork:
@ -132,7 +137,7 @@ exports.execFile = function(file /*, args, options, callback*/) {
callback = arguments[pos++];
}
if (pos === 1 && arguments.length > 1) {
if (!callback && arguments[pos] != null) {
throw new TypeError('Incorrect value of args option');
}

Loading…
Cancel
Save