summaryrefslogtreecommitdiff
path: root/src/node_dtrace.cc
diff options
context:
space:
mode:
authorBen Noordhuis <info@bnoordhuis.nl>2013-03-30 01:49:19 +0100
committerisaacs <i@izs.me>2013-04-03 09:52:56 -0700
commit75463899c8ef90e5a429cb1dcd578ee2886e71d4 (patch)
tree46ae5bcca7a035ebdbfd1c9006a111264bfa13f9 /src/node_dtrace.cc
parentaca31e37f7bccbf229f460b236753072eecfeeab (diff)
downloadandroid-node-v8-75463899c8ef90e5a429cb1dcd578ee2886e71d4.tar.gz
android-node-v8-75463899c8ef90e5a429cb1dcd578ee2886e71d4.tar.bz2
android-node-v8-75463899c8ef90e5a429cb1dcd578ee2886e71d4.zip
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.cc8
1 files 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<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);