Index: src/runtime.cc |
diff --git a/src/runtime.cc b/src/runtime.cc |
index 7edf0130676b4c205838e5d3b35c263e61b9c110..bb27a6e4bfd519b684d0b24b6d8b1373ed062d9a 100644 |
--- a/src/runtime.cc |
+++ b/src/runtime.cc |
@@ -1679,6 +1679,14 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_SetPrototype) { |
ASSERT(args.length() == 2); |
CONVERT_ARG_HANDLE_CHECKED(JSObject, obj, 0); |
CONVERT_ARG_HANDLE_CHECKED(Object, prototype, 1); |
+ if (obj->IsAccessCheckNeeded() && |
+ !isolate->MayNamedAccessWrapper(obj, |
+ isolate->factory()->proto_string(), |
+ v8::ACCESS_SET)) { |
+ isolate->ReportFailedAccessCheckWrapper(obj, v8::ACCESS_SET); |
+ RETURN_IF_SCHEDULED_EXCEPTION(isolate); |
+ return isolate->heap()->undefined_value(); |
+ } |
if (obj->map()->is_observed()) { |
Handle<Object> old_value( |
GetPrototypeSkipHiddenPrototypes(isolate, *obj), isolate); |