WebCore:
authorantti@apple.com <antti@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 9 Jan 2008 00:12:57 +0000 (00:12 +0000)
committerantti@apple.com <antti@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 9 Jan 2008 00:12:57 +0000 (00:12 +0000)
        Reviewed by Weinig.

        Add security check for Audio constructor.

        * bindings/js/kjs_window.cpp:
        (KJS::Window::getValueProperty):

LayoutTests:

        Reviewed by Weinig.

        Test cross-frame access to media properties.

        * http/tests/security/cross-frame-access-get-expected.txt:
        * http/tests/security/cross-frame-access-get.html:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@29323 268f45cc-cd09-0410-ab3c-d52691b4dbfc

LayoutTests/ChangeLog
LayoutTests/http/tests/security/cross-frame-access-get-expected.txt
LayoutTests/http/tests/security/cross-frame-access-get.html
WebCore/ChangeLog
WebCore/bindings/js/kjs_window.cpp

index d78f68990a29adce30c8d7fa2eb786b92db006bc..c66e6a1a8a1b0afad3a1603cb0c2c39723490bcc 100644 (file)
@@ -1,3 +1,12 @@
+2008-01-08  Antti Koivisto  <antti@apple.com>
+
+        Reviewed by Weinig.
+        
+        Test cross-frame access to media properties.
+
+        * http/tests/security/cross-frame-access-get-expected.txt:
+        * http/tests/security/cross-frame-access-get.html:
+
 2008-01-07  Antti Koivisto  <antti@apple.com>
 
         Rubber stamped by Darin.
index 55d81950d942bcbd77ed8193c3e35ee3829b63e9..ef1729393167adfacebf1f5d75291c6952482064 100644 (file)
@@ -362,6 +362,16 @@ CONSOLE MESSAGE: line 1: Unsafe JavaScript attempt to access frame with URL http
 
 CONSOLE MESSAGE: line 1: Unsafe JavaScript attempt to access frame with URL http://localhost:8000/security/resources/cross-frame-iframe-for-get-test.html from frame with URL http://127.0.0.1:8000/security/cross-frame-access-get.html. Domains, protocols and ports must match.
 
+CONSOLE MESSAGE: line 1: Unsafe JavaScript attempt to access frame with URL http://localhost:8000/security/resources/cross-frame-iframe-for-get-test.html from frame with URL http://127.0.0.1:8000/security/cross-frame-access-get.html. Domains, protocols and ports must match.
+
+CONSOLE MESSAGE: line 1: Unsafe JavaScript attempt to access frame with URL http://localhost:8000/security/resources/cross-frame-iframe-for-get-test.html from frame with URL http://127.0.0.1:8000/security/cross-frame-access-get.html. Domains, protocols and ports must match.
+
+CONSOLE MESSAGE: line 1: Unsafe JavaScript attempt to access frame with URL http://localhost:8000/security/resources/cross-frame-iframe-for-get-test.html from frame with URL http://127.0.0.1:8000/security/cross-frame-access-get.html. Domains, protocols and ports must match.
+
+CONSOLE MESSAGE: line 1: Unsafe JavaScript attempt to access frame with URL http://localhost:8000/security/resources/cross-frame-iframe-for-get-test.html from frame with URL http://127.0.0.1:8000/security/cross-frame-access-get.html. Domains, protocols and ports must match.
+
+CONSOLE MESSAGE: line 1: Unsafe JavaScript attempt to access frame with URL http://localhost:8000/security/resources/cross-frame-iframe-for-get-test.html from frame with URL http://127.0.0.1:8000/security/cross-frame-access-get.html. Domains, protocols and ports must match.
+
 This test checks cross-frame access security (rdar://problem/5251309).
 
 
@@ -393,6 +403,7 @@ PASS: canGet('targetWindow.window') should be 'true' and is.
 ----- tests for getting of not allowed Constructors -----
 
 PASS: canGet('targetWindow.Attr') should be 'false' and is.
+PASS: canGet('targetWindow.Audio') should be 'false' and is.
 PASS: canGet('targetWindow.CDATASection') should be 'false' and is.
 PASS: canGet('targetWindow.CSSPrimitiveValue') should be 'false' and is.
 PASS: canGet('targetWindow.CSSRule') should be 'false' and is.
@@ -412,6 +423,7 @@ PASS: canGet('targetWindow.EntityReference') should be 'false' and is.
 PASS: canGet('targetWindow.EvalError') should be 'false' and is.
 PASS: canGet('targetWindow.Event') should be 'false' and is.
 PASS: canGet('targetWindow.HTMLAnchorElement') should be 'false' and is.
+PASS: canGet('targetWindow.HTMLAudioElement') should be 'false' and is.
 PASS: canGet('targetWindow.HTMLAppletElement') should be 'false' and is.
 PASS: canGet('targetWindow.HTMLAreaElement') should be 'false' and is.
 PASS: canGet('targetWindow.HTMLBRElement') should be 'false' and is.
@@ -444,6 +456,7 @@ PASS: canGet('targetWindow.HTMLLegendElement') should be 'false' and is.
 PASS: canGet('targetWindow.HTMLLinkElement') should be 'false' and is.
 PASS: canGet('targetWindow.HTMLMapElement') should be 'false' and is.
 PASS: canGet('targetWindow.HTMLMarqueeElement') should be 'false' and is.
+PASS: canGet('targetWindow.HTMLMediaElement') should be 'false' and is.
 PASS: canGet('targetWindow.HTMLMenuElement') should be 'false' and is.
 PASS: canGet('targetWindow.HTMLMetaElement') should be 'false' and is.
 PASS: canGet('targetWindow.HTMLModElement') should be 'false' and is.
@@ -456,6 +469,7 @@ PASS: canGet('targetWindow.HTMLPreElement') should be 'false' and is.
 PASS: canGet('targetWindow.HTMLQuoteElement') should be 'false' and is.
 PASS: canGet('targetWindow.HTMLScriptElement') should be 'false' and is.
 PASS: canGet('targetWindow.HTMLSelectElement') should be 'false' and is.
+PASS: canGet('targetWindow.HTMLSourceElement') should be 'false' and is.
 PASS: canGet('targetWindow.HTMLStyleElement') should be 'false' and is.
 PASS: canGet('targetWindow.HTMLTableCaptionElement') should be 'false' and is.
 PASS: canGet('targetWindow.HTMLTableCellElement') should be 'false' and is.
@@ -466,6 +480,7 @@ PASS: canGet('targetWindow.HTMLTableSectionElement') should be 'false' and is.
 PASS: canGet('targetWindow.HTMLTextAreaElement') should be 'false' and is.
 PASS: canGet('targetWindow.HTMLTitleElement') should be 'false' and is.
 PASS: canGet('targetWindow.HTMLUListElement') should be 'false' and is.
+PASS: canGet('targetWindow.HTMLVideoElement') should be 'false' and is.
 PASS: canGet('targetWindow.Image') should be 'false' and is.
 PASS: canGet('targetWindow.MutationEvent') should be 'false' and is.
 PASS: canGet('targetWindow.Node') should be 'false' and is.
index 5274d400f58e05d4b301a08058b34424f3c1df44..450c12c39f270acd6847bccc22b9c07a3e1d511c 100644 (file)
@@ -9,6 +9,7 @@
 <script>
 var windowConstructorPropertiesNotAllowed = [
     "Attr", 
+    "Audio",
     "CDATASection", 
     "CSSPrimitiveValue", 
     "CSSRule", 
@@ -28,6 +29,7 @@ var windowConstructorPropertiesNotAllowed = [
     "EvalError", 
     "Event", 
     "HTMLAnchorElement", 
+    "HTMLAudioElement", 
     "HTMLAppletElement", 
     "HTMLAreaElement", 
     "HTMLBRElement", 
@@ -60,6 +62,7 @@ var windowConstructorPropertiesNotAllowed = [
     "HTMLLinkElement", 
     "HTMLMapElement", 
     "HTMLMarqueeElement", 
+    "HTMLMediaElement", 
     "HTMLMenuElement", 
     "HTMLMetaElement", 
     "HTMLModElement", 
@@ -72,6 +75,7 @@ var windowConstructorPropertiesNotAllowed = [
     "HTMLQuoteElement", 
     "HTMLScriptElement", 
     "HTMLSelectElement", 
+    "HTMLSourceElement",  
     "HTMLStyleElement", 
     "HTMLTableCaptionElement", 
     "HTMLTableCellElement", 
@@ -82,6 +86,7 @@ var windowConstructorPropertiesNotAllowed = [
     "HTMLTextAreaElement", 
     "HTMLTitleElement", 
     "HTMLUListElement", 
+    "HTMLVideoElement", 
     "Image", 
     "MutationEvent", 
     "Node", 
index c7d900de076f7f00289c2bbafe3148102c2c28a3..41d3c1c363899728d99767b5978388cf7996cee1 100644 (file)
@@ -1,3 +1,12 @@
+2008-01-08  Antti Koivisto  <antti@apple.com>
+
+        Reviewed by Weinig.
+        
+        Add security check for Audio constructor.
+
+        * bindings/js/kjs_window.cpp:
+        (KJS::Window::getValueProperty):
+
 2008-01-08  Timothy Hatcher  <timothy@apple.com>
 
         Reviewed by Adam Roben.
index 8aa4e12dd9ca21d81f907ec7f2fb754fde43c841..d1f74362a4835e27fda21c4f8ce5d4b9c1f66bbe 100644 (file)
@@ -495,6 +495,8 @@ JSValue *Window::getValueProperty(ExecState *exec, int token) const
       return new JSXMLHttpRequestConstructorImp(exec, impl()->frame()->document());
     case Audio:
 #if ENABLE(VIDEO)
+      if (!allowsAccessFrom(exec))
+        return jsUndefined();
       if (!MediaPlayer::isAvailable())
         return jsUndefined();
       return new JSHTMLAudioElementConstructor(exec, impl()->frame()->document());