From 873b5f8428fccd7cb73378fff951a08d9aab4e91 Mon Sep 17 00:00:00 2001 From: Trevor Norris Date: Mon, 26 Aug 2013 03:26:31 -0700 Subject: [PATCH] buffer: fix assert fail from JS API Length arguments passed to SlowBuffer were coerced to Int32, not Uint32, so passing a negative number would throw the following: node: ../src/smalloc.cc:244: void node::smalloc::Alloc(): Assertion `length <= kMaxLength' failed. Aborted (core dumped) That has been fixed by coercing to Uint32 and comparing the value against kMaxLength. --- lib/buffer.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/buffer.js b/lib/buffer.js index fc6b657..dfd79e6 100644 --- a/lib/buffer.js +++ b/lib/buffer.js @@ -89,7 +89,9 @@ function Buffer(subject, encoding) { function SlowBuffer(length) { - length = ~~length; + length = length >>> 0; + if (length > kMaxLength) + throw new RangeError('length > kMaxLength'); var b = new NativeBuffer(length); alloc(b, length); return b; -- 2.7.4