From 5e409c2f1aa94b76f42e58001f7fcd0959a958aa Mon Sep 17 00:00:00 2001 From: Ryan Dahl Date: Thu, 19 May 2011 12:13:48 -0700 Subject: [PATCH] makeFastBuffer should not segfault but rather throw on non-buffer --- src/node_buffer.cc | 5 +++++ test/simple/test-buffer.js | 4 ++++ 2 files changed, 9 insertions(+) diff --git a/src/node_buffer.cc b/src/node_buffer.cc index 75bac2a2808..33870c3757a 100644 --- a/src/node_buffer.cc +++ b/src/node_buffer.cc @@ -679,6 +679,11 @@ Handle Buffer::ByteLength(const Arguments &args) { Handle Buffer::MakeFastBuffer(const Arguments &args) { HandleScope scope; + if (!Buffer::HasInstance(args[0])) { + return ThrowException(Exception::TypeError(String::New( + "First argument must be a Buffer"))); + } + Buffer *buffer = ObjectWrap::Unwrap(args[0]->ToObject()); Local fast_buffer = args[1]->ToObject();; uint32_t offset = args[2]->Uint32Value(); diff --git a/test/simple/test-buffer.js b/test/simple/test-buffer.js index 1aa4611010d..ae67d09d6ed 100644 --- a/test/simple/test-buffer.js +++ b/test/simple/test-buffer.js @@ -520,3 +520,7 @@ assert.equal(0xee, b[0]); assert.equal(0xad, b[1]); assert.equal(0xbe, b[2]); assert.equal(0xef, b[3]); + + +// This should not segfault the program. +new Buffer('"pong"', 0, 6, 8031, '127.0.0.1')