diff options
author | Joyee Cheung <joyeec9h3@gmail.com> | 2016-12-13 12:51:01 +0800 |
---|---|---|
committer | Anna Henningsen <anna@addaleax.net> | 2016-12-13 19:25:13 +0100 |
commit | 3d353c749cdb64b2d018766d05ba0e9b9b0f7ec8 (patch) | |
tree | 1e98fa2e1b0522361d26800da2d3757f058a7124 /lib/buffer.js | |
parent | 832960592faaf290903adcc768778ef4bdc6e9fc (diff) | |
download | android-node-v8-3d353c749cdb64b2d018766d05ba0e9b9b0f7ec8.tar.gz android-node-v8-3d353c749cdb64b2d018766d05ba0e9b9b0f7ec8.tar.bz2 android-node-v8-3d353c749cdb64b2d018766d05ba0e9b9b0f7ec8.zip |
buffer: consistent error for length > kMaxLength
- Always return the same error message(hopefully more informative)
for buffer length > kMaxLength and avoid getting into V8 C++ land
for unnecessary checks.
- Use accurate RegExp(reusable as `common.bufferMaxSizeMsg`)
in tests for this error.
- Separate related tests from test-buffer-alloc.
PR-URL: https://github.com/nodejs/node/pull/10152
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Diffstat (limited to 'lib/buffer.js')
-rw-r--r-- | lib/buffer.js | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/lib/buffer.js b/lib/buffer.js index 557ac867e2..9a515e3381 100644 --- a/lib/buffer.js +++ b/lib/buffer.js @@ -115,6 +115,9 @@ function assertSize(size) { err = new TypeError('"size" argument must be a number'); else if (size < 0) err = new RangeError('"size" argument must not be negative'); + else if (size > binding.kMaxLength) + err = new RangeError('"size" argument must not be larger ' + + 'than ' + binding.kMaxLength); if (err) { // The following hides the 'assertSize' method from the @@ -167,6 +170,7 @@ Buffer.allocUnsafeSlow = function(size) { function SlowBuffer(length) { if (+length != length) length = 0; + assertSize(+length); return createUnsafeBuffer(+length); } |