From 5b9e57012a5c4d4132700e3c345dceb08ba947ed Mon Sep 17 00:00:00 2001 From: cjihrig Date: Mon, 8 Apr 2019 13:06:02 -0400 Subject: [PATCH] lib: add signal name validator PR-URL: https://github.com/nodejs/node/pull/27137 Reviewed-By: Richard Lau Reviewed-By: Ben Noordhuis Reviewed-By: Ruben Bridgewater Reviewed-By: Jeremiah Senkpiel --- lib/internal/validators.js | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/lib/internal/validators.js b/lib/internal/validators.js index 3cc9c2820a1b09..9ee4090e4be2b7 100644 --- a/lib/internal/validators.js +++ b/lib/internal/validators.js @@ -5,12 +5,14 @@ const { codes: { ERR_INVALID_ARG_TYPE, ERR_INVALID_ARG_VALUE, - ERR_OUT_OF_RANGE + ERR_OUT_OF_RANGE, + ERR_UNKNOWN_SIGNAL } } = require('internal/errors'); const { isArrayBufferView } = require('internal/util/types'); +const { signals } = internalBinding('constants').os; function isInt32(value) { return value === (value | 0); @@ -110,6 +112,20 @@ function validateNumber(value, name) { throw new ERR_INVALID_ARG_TYPE(name, 'number', value); } +function validateSignalName(signal, name = 'signal') { + if (typeof signal !== 'string') + throw new ERR_INVALID_ARG_TYPE(name, 'string', signal); + + if (signals[signal] === undefined) { + if (signals[signal.toUpperCase()] !== undefined) { + throw new ERR_UNKNOWN_SIGNAL(signal + + ' (signals must use all capital letters)'); + } + + throw new ERR_UNKNOWN_SIGNAL(signal); + } +} + // TODO(BridgeAR): We have multiple validation functions that call // `require('internal/utils').toBuf()` before validating for array buffer views. // Those should likely also be consolidated in here. @@ -130,5 +146,6 @@ module.exports = { validateInt32, validateUint32, validateString, - validateNumber + validateNumber, + validateSignalName };