summaryrefslogtreecommitdiff
path: root/src/tcp_wrap.cc
diff options
context:
space:
mode:
authorC. Scott Ananian <cscott@cscott.net>2014-03-06 15:44:18 -0500
committerTrevor Norris <trev.norris@gmail.com>2014-04-02 01:48:34 -0700
commit08a5b442e42ff67bd5666604eebe69f1b4a1c919 (patch)
treeef08abc6ccc5fd1e07494b5074cf8b560c89f3cf /src/tcp_wrap.cc
parentd4fcb23e38e74d21e04b3a17d10e52949b630ec0 (diff)
downloadandroid-node-v8-08a5b442e42ff67bd5666604eebe69f1b4a1c919.tar.gz
android-node-v8-08a5b442e42ff67bd5666604eebe69f1b4a1c919.tar.bz2
android-node-v8-08a5b442e42ff67bd5666604eebe69f1b4a1c919.zip
node: add signature to SET_PROTOTYPE_METHOD
This prevents segfaults when a native method is reassigned to a different object (which corrupts args.This()). When unwrapping, clients should use args.Holder() instead of args.This(). Closes #6690. Signed-off-by: Trevor Norris <trev.norris@gmail.com>
Diffstat (limited to 'src/tcp_wrap.cc')
-rw-r--r--src/tcp_wrap.cc22
1 files changed, 11 insertions, 11 deletions
diff --git a/src/tcp_wrap.cc b/src/tcp_wrap.cc
index 2ffe9cb465..6f89b5d148 100644
--- a/src/tcp_wrap.cc
+++ b/src/tcp_wrap.cc
@@ -161,7 +161,7 @@ void TCPWrap::GetSockName(const FunctionCallbackInfo<Value>& args) {
Environment* env = Environment::GetCurrent(args.GetIsolate());
struct sockaddr_storage address;
- TCPWrap* wrap = Unwrap<TCPWrap>(args.This());
+ TCPWrap* wrap = Unwrap<TCPWrap>(args.Holder());
assert(args[0]->IsObject());
Local<Object> out = args[0].As<Object>();
@@ -184,7 +184,7 @@ void TCPWrap::GetPeerName(const FunctionCallbackInfo<Value>& args) {
Environment* env = Environment::GetCurrent(args.GetIsolate());
struct sockaddr_storage address;
- TCPWrap* wrap = Unwrap<TCPWrap>(args.This());
+ TCPWrap* wrap = Unwrap<TCPWrap>(args.Holder());
assert(args[0]->IsObject());
Local<Object> out = args[0].As<Object>();
@@ -206,7 +206,7 @@ void TCPWrap::SetNoDelay(const FunctionCallbackInfo<Value>& args) {
Environment* env = Environment::GetCurrent(args.GetIsolate());
HandleScope scope(env->isolate());
- TCPWrap* wrap = Unwrap<TCPWrap>(args.This());
+ TCPWrap* wrap = Unwrap<TCPWrap>(args.Holder());
int enable = static_cast<int>(args[0]->BooleanValue());
int err = uv_tcp_nodelay(&wrap->handle_, enable);
@@ -218,7 +218,7 @@ void TCPWrap::SetKeepAlive(const FunctionCallbackInfo<Value>& args) {
Environment* env = Environment::GetCurrent(args.GetIsolate());
HandleScope scope(env->isolate());
- TCPWrap* wrap = Unwrap<TCPWrap>(args.This());
+ TCPWrap* wrap = Unwrap<TCPWrap>(args.Holder());
int enable = args[0]->Int32Value();
unsigned int delay = args[1]->Uint32Value();
@@ -233,7 +233,7 @@ void TCPWrap::SetSimultaneousAccepts(const FunctionCallbackInfo<Value>& args) {
Environment* env = Environment::GetCurrent(args.GetIsolate());
HandleScope scope(env->isolate());
- TCPWrap* wrap = Unwrap<TCPWrap>(args.This());
+ TCPWrap* wrap = Unwrap<TCPWrap>(args.Holder());
bool enable = args[0]->BooleanValue();
int err = uv_tcp_simultaneous_accepts(&wrap->handle_, enable);
@@ -245,7 +245,7 @@ void TCPWrap::SetSimultaneousAccepts(const FunctionCallbackInfo<Value>& args) {
void TCPWrap::Open(const FunctionCallbackInfo<Value>& args) {
Environment* env = Environment::GetCurrent(args.GetIsolate());
HandleScope scope(env->isolate());
- TCPWrap* wrap = Unwrap<TCPWrap>(args.This());
+ TCPWrap* wrap = Unwrap<TCPWrap>(args.Holder());
int fd = args[0]->IntegerValue();
uv_tcp_open(&wrap->handle_, fd);
}
@@ -255,7 +255,7 @@ void TCPWrap::Bind(const FunctionCallbackInfo<Value>& args) {
Environment* env = Environment::GetCurrent(args.GetIsolate());
HandleScope scope(env->isolate());
- TCPWrap* wrap = Unwrap<TCPWrap>(args.This());
+ TCPWrap* wrap = Unwrap<TCPWrap>(args.Holder());
String::Utf8Value ip_address(args[0]);
int port = args[1]->Int32Value();
@@ -276,7 +276,7 @@ void TCPWrap::Bind6(const FunctionCallbackInfo<Value>& args) {
Environment* env = Environment::GetCurrent(args.GetIsolate());
HandleScope scope(env->isolate());
- TCPWrap* wrap = Unwrap<TCPWrap>(args.This());
+ TCPWrap* wrap = Unwrap<TCPWrap>(args.Holder());
String::Utf8Value ip6_address(args[0]);
int port = args[1]->Int32Value();
@@ -297,7 +297,7 @@ void TCPWrap::Listen(const FunctionCallbackInfo<Value>& args) {
Environment* env = Environment::GetCurrent(args.GetIsolate());
HandleScope scope(env->isolate());
- TCPWrap* wrap = Unwrap<TCPWrap>(args.This());
+ TCPWrap* wrap = Unwrap<TCPWrap>(args.Holder());
int backlog = args[0]->Int32Value();
int err = uv_listen(reinterpret_cast<uv_stream_t*>(&wrap->handle_),
@@ -374,7 +374,7 @@ void TCPWrap::Connect(const FunctionCallbackInfo<Value>& args) {
HandleScope handle_scope(args.GetIsolate());
Environment* env = Environment::GetCurrent(args.GetIsolate());
- TCPWrap* wrap = Unwrap<TCPWrap>(args.This());
+ TCPWrap* wrap = Unwrap<TCPWrap>(args.Holder());
assert(args[0]->IsObject());
assert(args[1]->IsString());
@@ -408,7 +408,7 @@ void TCPWrap::Connect6(const FunctionCallbackInfo<Value>& args) {
HandleScope handle_scope(args.GetIsolate());
Environment* env = Environment::GetCurrent(args.GetIsolate());
- TCPWrap* wrap = Unwrap<TCPWrap>(args.This());
+ TCPWrap* wrap = Unwrap<TCPWrap>(args.Holder());
assert(args[0]->IsObject());
assert(args[1]->IsString());