Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nodejs/node.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndre Jodat-Danbrani <andre.jodat-danbrani@xe.com>2018-10-12 21:44:10 +0300
committerRich Trott <rtrott@gmail.com>2018-10-24 07:05:47 +0300
commitcdba3c1de0de37576426421128982a4022480381 (patch)
tree9d6a4f455d6444fc8131a4cf1e31fcf506942754 /lib/tls.js
parent51cd9719b5fde5da973dcdbb196402b49f885c63 (diff)
tls: throw if protocol too long
The convertProtocols() function now throws a range error when the byte length of a protocol is too long to fit in a Buffer. Also added a test case in test/parallel/test-tls-basic-validations.js to cover this. PR-URL: https://github.com/nodejs/node/pull/23606 Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: Sakthipriyan Vairamani <thechargingvolcano@gmail.com>
Diffstat (limited to 'lib/tls.js')
-rw-r--r--lib/tls.js9
1 files changed, 8 insertions, 1 deletions
diff --git a/lib/tls.js b/lib/tls.js
index 3335632c933..d6b86a41037 100644
--- a/lib/tls.js
+++ b/lib/tls.js
@@ -21,7 +21,10 @@
'use strict';
-const { ERR_TLS_CERT_ALTNAME_INVALID } = require('internal/errors').codes;
+const {
+ ERR_TLS_CERT_ALTNAME_INVALID,
+ ERR_OUT_OF_RANGE
+} = require('internal/errors').codes;
const internalUtil = require('internal/util');
const internalTLS = require('internal/tls');
internalUtil.assertCrypto();
@@ -60,6 +63,10 @@ function convertProtocols(protocols) {
const lens = new Array(protocols.length);
const buff = Buffer.allocUnsafe(protocols.reduce((p, c, i) => {
var len = Buffer.byteLength(c);
+ if (len > 255) {
+ throw new ERR_OUT_OF_RANGE('The byte length of the protocol at index ' +
+ `${i} exceeds the maximum length.`, '<= 255', len, true);
+ }
lens[i] = len;
return p + 1 + len;
}, 0));