child_process: improve killSignal validations · nodejs/node@d75fdd9
@@ -22,9 +22,8 @@
2222'use strict';
23232424const util = require('util');
25-const internalUtil = require('internal/util');
25+const { deprecate, convertToValidSignal } = require('internal/util');
2626const debug = util.debuglog('child_process');
27-const constants = process.binding('constants').os.signals;
28272928const uv = process.binding('uv');
3029const spawn_sync = process.binding('spawn_sync');
@@ -181,6 +180,8 @@ exports.execFile = function(file /*, args, options, callback*/) {
181180// Validate maxBuffer, if present.
182181validateMaxBuffer(options.maxBuffer);
183182183+options.killSignal = sanitizeKillSignal(options.killSignal);
184+184185var child = spawn(file, args, {
185186cwd: options.cwd,
186187env: options.env,
@@ -332,7 +333,7 @@ exports.execFile = function(file /*, args, options, callback*/) {
332333return child;
333334};
334335335-const _deprecatedCustomFds = internalUtil.deprecate(
336+const _deprecatedCustomFds = deprecate(
336337function deprecateCustomFds(options) {
337338options.stdio = options.customFds.map(function mapCustomFds(fd) {
338339return fd === -1 ? 'pipe' : fd;
@@ -474,18 +475,6 @@ var spawn = exports.spawn = function(/*file, args, options*/) {
474475return child;
475476};
476477477-478-function lookupSignal(signal) {
479-if (typeof signal === 'number')
480-return signal;
481-482-if (!(signal in constants))
483-throw new Error('Unknown signal: ' + signal);
484-485-return constants[signal];
486-}
487-488-489478function spawnSync(/*file, args, options*/) {
490479var opts = normalizeSpawnArguments.apply(null, arguments);
491480@@ -506,7 +495,7 @@ function spawnSync(/*file, args, options*/) {
506495options.envPairs = opts.envPairs;
507496508497// Validate and translate the kill signal, if present.
509-options.killSignal = validateKillSignal(options.killSignal);
498+options.killSignal = sanitizeKillSignal(options.killSignal);
510499511500options.stdio = _validateStdio(options.stdio || 'pipe', true).stdio;
512501@@ -632,15 +621,10 @@ function validateMaxBuffer(maxBuffer) {
632621}
633622634623635-function validateKillSignal(killSignal) {
624+function sanitizeKillSignal(killSignal) {
636625if (typeof killSignal === 'string' || typeof killSignal === 'number') {
637-killSignal = lookupSignal(killSignal);
638-639-if (killSignal === 0)
640-throw new RangeError('"killSignal" cannot be 0');
626+return convertToValidSignal(killSignal);
641627} else if (killSignal != null) {
642628throw new TypeError('"killSignal" must be a string or number');
643629}
644-645-return killSignal;
646630}