Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(347)

Side by Side Diff: src/api.cc

Issue 1036743004: add access checks to receivers on function callbacks (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: super nit Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « include/v8.h ('k') | src/builtins.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "src/api.h" 5 #include "src/api.h"
6 6
7 #include <string.h> // For memcpy, strlen. 7 #include <string.h> // For memcpy, strlen.
8 #ifdef V8_USE_ADDRESS_SANITIZER 8 #ifdef V8_USE_ADDRESS_SANITIZER
9 #include <sanitizer/asan_interface.h> 9 #include <sanitizer/asan_interface.h>
10 #endif // V8_USE_ADDRESS_SANITIZER 10 #endif // V8_USE_ADDRESS_SANITIZER
(...skipping 935 matching lines...) Expand 10 before | Expand all | Expand 10 after
946 obj->set_serial_number(i::Smi::FromInt(next_serial_number)); 946 obj->set_serial_number(i::Smi::FromInt(next_serial_number));
947 if (callback != 0) { 947 if (callback != 0) {
948 if (data.IsEmpty()) { 948 if (data.IsEmpty()) {
949 data = v8::Undefined(reinterpret_cast<v8::Isolate*>(isolate)); 949 data = v8::Undefined(reinterpret_cast<v8::Isolate*>(isolate));
950 } 950 }
951 Utils::ToLocal(obj)->SetCallHandler(callback, data); 951 Utils::ToLocal(obj)->SetCallHandler(callback, data);
952 } 952 }
953 obj->set_length(length); 953 obj->set_length(length);
954 obj->set_undetectable(false); 954 obj->set_undetectable(false);
955 obj->set_needs_access_check(false); 955 obj->set_needs_access_check(false);
956 obj->set_accept_any_receiver(true);
956 if (!signature.IsEmpty()) 957 if (!signature.IsEmpty())
957 obj->set_signature(*Utils::OpenHandle(*signature)); 958 obj->set_signature(*Utils::OpenHandle(*signature));
958 return Utils::ToLocal(obj); 959 return Utils::ToLocal(obj);
959 } 960 }
960 961
961 Local<FunctionTemplate> FunctionTemplate::New( 962 Local<FunctionTemplate> FunctionTemplate::New(
962 Isolate* isolate, 963 Isolate* isolate,
963 FunctionCallback callback, 964 FunctionCallback callback,
964 v8::Handle<Value> data, 965 v8::Handle<Value> data,
965 v8::Handle<Signature> signature, 966 v8::Handle<Signature> signature,
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after
1119 1120
1120 void FunctionTemplate::SetClassName(Handle<String> name) { 1121 void FunctionTemplate::SetClassName(Handle<String> name) {
1121 auto info = Utils::OpenHandle(this); 1122 auto info = Utils::OpenHandle(this);
1122 EnsureNotInstantiated(info, "v8::FunctionTemplate::SetClassName"); 1123 EnsureNotInstantiated(info, "v8::FunctionTemplate::SetClassName");
1123 auto isolate = info->GetIsolate(); 1124 auto isolate = info->GetIsolate();
1124 ENTER_V8(isolate); 1125 ENTER_V8(isolate);
1125 info->set_class_name(*Utils::OpenHandle(*name)); 1126 info->set_class_name(*Utils::OpenHandle(*name));
1126 } 1127 }
1127 1128
1128 1129
1130 void FunctionTemplate::SetAcceptAnyReceiver(bool value) {
1131 auto info = Utils::OpenHandle(this);
1132 EnsureNotInstantiated(info, "v8::FunctionTemplate::SetAcceptAnyReceiver");
1133 auto isolate = info->GetIsolate();
1134 ENTER_V8(isolate);
1135 info->set_accept_any_receiver(value);
1136 }
1137
1138
1129 void FunctionTemplate::SetHiddenPrototype(bool value) { 1139 void FunctionTemplate::SetHiddenPrototype(bool value) {
1130 auto info = Utils::OpenHandle(this); 1140 auto info = Utils::OpenHandle(this);
1131 EnsureNotInstantiated(info, "v8::FunctionTemplate::SetHiddenPrototype"); 1141 EnsureNotInstantiated(info, "v8::FunctionTemplate::SetHiddenPrototype");
1132 auto isolate = info->GetIsolate(); 1142 auto isolate = info->GetIsolate();
1133 ENTER_V8(isolate); 1143 ENTER_V8(isolate);
1134 info->set_hidden_prototype(value); 1144 info->set_hidden_prototype(value);
1135 } 1145 }
1136 1146
1137 1147
1138 void FunctionTemplate::ReadOnlyPrototype() { 1148 void FunctionTemplate::ReadOnlyPrototype() {
(...skipping 6913 matching lines...) Expand 10 before | Expand all | Expand 10 after
8052 Isolate* isolate = reinterpret_cast<Isolate*>(info.GetIsolate()); 8062 Isolate* isolate = reinterpret_cast<Isolate*>(info.GetIsolate());
8053 Address callback_address = 8063 Address callback_address =
8054 reinterpret_cast<Address>(reinterpret_cast<intptr_t>(callback)); 8064 reinterpret_cast<Address>(reinterpret_cast<intptr_t>(callback));
8055 VMState<EXTERNAL> state(isolate); 8065 VMState<EXTERNAL> state(isolate);
8056 ExternalCallbackScope call_scope(isolate, callback_address); 8066 ExternalCallbackScope call_scope(isolate, callback_address);
8057 callback(info); 8067 callback(info);
8058 } 8068 }
8059 8069
8060 8070
8061 } } // namespace v8::internal 8071 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « include/v8.h ('k') | src/builtins.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698