diff options
author | Steve Block <steveblock@google.com> | 2010-09-29 17:32:26 +0100 |
---|---|---|
committer | Steve Block <steveblock@google.com> | 2010-09-29 17:35:08 +0100 |
commit | 68513a70bcd92384395513322f1b801e7bf9c729 (patch) | |
tree | 161b50f75a5921d61731bb25e730005994fcec85 /WebCore/bindings/v8/custom/V8DOMWindowCustom.cpp | |
parent | fd5c6425ce58eb75211be7718d5dee960842a37e (diff) | |
download | external_webkit-68513a70bcd92384395513322f1b801e7bf9c729.zip external_webkit-68513a70bcd92384395513322f1b801e7bf9c729.tar.gz external_webkit-68513a70bcd92384395513322f1b801e7bf9c729.tar.bz2 |
Merge WebKit at r67908: Initial merge by Git
Change-Id: I43a553e7b3299b28cb6ee8aa035ed70fe342b972
Diffstat (limited to 'WebCore/bindings/v8/custom/V8DOMWindowCustom.cpp')
-rw-r--r-- | WebCore/bindings/v8/custom/V8DOMWindowCustom.cpp | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/WebCore/bindings/v8/custom/V8DOMWindowCustom.cpp b/WebCore/bindings/v8/custom/V8DOMWindowCustom.cpp index 45cb1b4..f7c75f7 100644 --- a/WebCore/bindings/v8/custom/V8DOMWindowCustom.cpp +++ b/WebCore/bindings/v8/custom/V8DOMWindowCustom.cpp @@ -605,9 +605,11 @@ bool V8DOMWindow::namedSecurityCheck(v8::Local<v8::Object> host, v8::Local<v8::V if (key->IsString()) { String name = toWebCoreString(key); - - // Allow access of GET and HAS if index is a subframe. - if ((type == v8::ACCESS_GET || type == v8::ACCESS_HAS) && target->tree()->child(name)) + // Notice that we can't call HasRealNamedProperty for ACCESS_HAS + // because that would generate infinite recursion. + if (type == v8::ACCESS_HAS && target->tree()->child(name)) + return true; + if (type == v8::ACCESS_GET && target->tree()->child(name) && !host->HasRealNamedProperty(key->ToString())) return true; } @@ -628,8 +630,11 @@ bool V8DOMWindow::indexedSecurityCheck(v8::Local<v8::Object> host, uint32_t inde if (!target) return false; - // Allow access of GET and HAS if index is a subframe. - if ((type == v8::ACCESS_GET || type == v8::ACCESS_HAS) && target->tree()->child(index)) + // Notice that we can't call HasRealNamedProperty for ACCESS_HAS + // because that would generate infinite recursion. + if (type == v8::ACCESS_HAS && target->tree()->child(index)) + return true; + if (type == v8::ACCESS_GET && target->tree()->child(index) && !host->HasRealIndexedProperty(index)) return true; return V8BindingSecurity::canAccessFrame(V8BindingState::Only(), target, false); |