Skip to content

Commit 6113ba9

Browse files
ZYSzysdanbev
authored andcommitted
buffer: harden SlowBuffer creation
PR-URL: #26272 Reviewed-By: Ben Noordhuis <[email protected]> Reviewed-By: James M Snell <[email protected]> Reviewed-By: Jeremiah Senkpiel <[email protected]> Reviewed-By: Matteo Collina <[email protected]> Reviewed-By: Ruben Bridgewater <[email protected]>
1 parent 560466c commit 6113ba9

File tree

2 files changed

+16
-15
lines changed

2 files changed

+16
-15
lines changed

lib/buffer.js

-2
Original file line numberDiff line numberDiff line change
@@ -297,8 +297,6 @@ Buffer.allocUnsafeSlow = function allocUnsafeSlow(size) {
297297
// If --zero-fill-buffers command line argument is set, a zero-filled
298298
// buffer is returned.
299299
function SlowBuffer(length) {
300-
if (typeof length !== 'number')
301-
length = +length;
302300
assertSize(length);
303301
return createUnsafeBuffer(length);
304302
}

test/parallel/test-buffer-slow.js

+16-13
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
'use strict';
22

3-
const common = require('../common');
3+
require('../common');
44
const assert = require('assert');
55
const buffer = require('buffer');
66
const SlowBuffer = buffer.SlowBuffer;
@@ -39,21 +39,24 @@ try {
3939
assert.strictEqual(e.name, 'RangeError');
4040
}
4141

42-
// Should work with number-coercible values
43-
assert.strictEqual(SlowBuffer('6').length, 6);
44-
assert.strictEqual(SlowBuffer(true).length, 1);
45-
46-
// Should throw with invalid length
47-
const bufferMaxSizeMsg = common.expectsError({
42+
// Should throw with invalid length type
43+
const bufferInvalidTypeMsg = {
44+
code: 'ERR_INVALID_ARG_TYPE',
45+
name: 'TypeError [ERR_INVALID_ARG_TYPE]',
46+
message: /^The "size" argument must be of type number/,
47+
};
48+
assert.throws(() => SlowBuffer(), bufferInvalidTypeMsg);
49+
assert.throws(() => SlowBuffer({}), bufferInvalidTypeMsg);
50+
assert.throws(() => SlowBuffer('6'), bufferInvalidTypeMsg);
51+
assert.throws(() => SlowBuffer(true), bufferInvalidTypeMsg);
52+
53+
// Should throw with invalid length value
54+
const bufferMaxSizeMsg = {
4855
code: 'ERR_INVALID_OPT_VALUE',
49-
type: RangeError,
56+
name: 'RangeError [ERR_INVALID_OPT_VALUE]',
5057
message: /^The value "[^"]*" is invalid for option "size"$/
51-
}, 7);
52-
53-
assert.throws(() => SlowBuffer(), bufferMaxSizeMsg);
58+
};
5459
assert.throws(() => SlowBuffer(NaN), bufferMaxSizeMsg);
55-
assert.throws(() => SlowBuffer({}), bufferMaxSizeMsg);
56-
assert.throws(() => SlowBuffer('string'), bufferMaxSizeMsg);
5760
assert.throws(() => SlowBuffer(Infinity), bufferMaxSizeMsg);
5861
assert.throws(() => SlowBuffer(-1), bufferMaxSizeMsg);
5962
assert.throws(() => SlowBuffer(buffer.kMaxLength + 1), bufferMaxSizeMsg);

0 commit comments

Comments
 (0)