From 75463899c8ef90e5a429cb1dcd578ee2886e71d4 Mon Sep 17 00:00:00 2001 From: Ben Noordhuis Date: Sat, 30 Mar 2013 01:49:19 +0100 Subject: [PATCH] dtrace: check if _handle property is set Check that _handle is an object before trying to read its `fd` property, avoids bogus values. --- src/node_dtrace.cc | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/node_dtrace.cc b/src/node_dtrace.cc index 9770ae2377..4318e8b49c 100644 --- a/src/node_dtrace.cc +++ b/src/node_dtrace.cc @@ -91,8 +91,12 @@ using namespace v8; } \ node_dtrace_connection_t conn; \ Local _##conn = Local::Cast(arg); \ - Local _handle = (_##conn)->Get(String::New("_handle"))->ToObject(); \ - SLURP_INT(_handle, fd, &conn.fd); \ + Local _handle = (_##conn)->Get(String::New("_handle")); \ + if (_handle->IsObject()) { \ + SLURP_INT(_handle.As(), fd, &conn.fd); \ + } else { \ + conn.fd = -1; \ + } \ SLURP_STRING(_##conn, remoteAddress, &conn.remote); \ SLURP_INT(_##conn, remotePort, &conn.port); \ SLURP_INT(_##conn, bufferSize, &conn.buffered);