diff options
author | Ben Noordhuis <info@bnoordhuis.nl> | 2013-03-30 04:49:19 +0400 |
---|---|---|
committer | Ben Noordhuis <info@bnoordhuis.nl> | 2013-03-30 04:49:21 +0400 |
commit | 9b8dd395536df3dbb21423dba888998f2cd36d2a (patch) | |
tree | 8bbcebe26cd035d7f82de3c9f0dc27322e994478 /src/node_dtrace.cc | |
parent | aa5da48594c1634de9f439bcf223acff3fb1fcd8 (diff) |
dtrace: check if _handle property is set
Check that _handle is an object before trying to read its `fd`
property, avoids bogus values.
Diffstat (limited to 'src/node_dtrace.cc')
-rw-r--r-- | src/node_dtrace.cc | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/node_dtrace.cc b/src/node_dtrace.cc index 49ebf07cf82..5c01a1753ce 100644 --- a/src/node_dtrace.cc +++ b/src/node_dtrace.cc @@ -91,8 +91,12 @@ using namespace v8; } \ node_dtrace_connection_t conn; \ Local<Object> _##conn = Local<Object>::Cast(arg); \ - Local<Object> _handle = (_##conn)->Get(String::New("_handle"))->ToObject(); \ - SLURP_INT(_handle, fd, &conn.fd); \ + Local<Value> _handle = (_##conn)->Get(String::New("_handle")); \ + if (_handle->IsObject()) { \ + SLURP_INT(_handle.As<Object>(), 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); |