Title: [168636] trunk
Revision
168636
Author
[email protected]
Date
2014-05-12 12:47:12 -0700 (Mon, 12 May 2014)

Log Message

Disallow drag and drop of non-displayable resources.
https://bugs.webkit.org/show_bug.cgi?id=132745
<rdar://problem/10562662>

Reviewed by Alexey Proskuryakov.

Source/WebCore:
Test: http/tests/security/drag-drop-local-file.html

* page/DragController.cpp:
(WebCore::DragController::startDrag):

LayoutTests:
* http/tests/security/drag-drop-local-file-expected.txt: Added.
* http/tests/security/drag-drop-local-file.html: Added.

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (168635 => 168636)


--- trunk/LayoutTests/ChangeLog	2014-05-12 19:23:47 UTC (rev 168635)
+++ trunk/LayoutTests/ChangeLog	2014-05-12 19:47:12 UTC (rev 168636)
@@ -1,3 +1,14 @@
+2014-05-12  Martin Hock  <[email protected]>
+
+        Disallow drag and drop of non-displayable resources.
+        https://bugs.webkit.org/show_bug.cgi?id=132745
+        <rdar://problem/10562662>
+
+        Reviewed by Alexey Proskuryakov.
+
+        * http/tests/security/drag-drop-local-file-expected.txt: Added.
+        * http/tests/security/drag-drop-local-file.html: Added.
+
 2014-05-12  Radu Stavila  <[email protected]>
 
         fast/multicol/newmulticol/first-letter-create.html is very flaky

Added: trunk/LayoutTests/http/tests/security/drag-drop-local-file-expected.txt (0 => 168636)


--- trunk/LayoutTests/http/tests/security/drag-drop-local-file-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/http/tests/security/drag-drop-local-file-expected.txt	2014-05-12 19:47:12 UTC (rev 168636)
@@ -0,0 +1,3 @@
+CONSOLE MESSAGE: Not allowed to drag local resource: foobar
+ALERT: PASS
+Dragme 

Added: trunk/LayoutTests/http/tests/security/drag-drop-local-file.html (0 => 168636)


--- trunk/LayoutTests/http/tests/security/drag-drop-local-file.html	                        (rev 0)
+++ trunk/LayoutTests/http/tests/security/drag-drop-local-file.html	2014-05-12 19:47:12 UTC (rev 168636)
@@ -0,0 +1,36 @@
+<html>
+<head>
+<script>
+if (window.testRunner) {
+    testRunner.dumpAsText();
+    testRunner.waitUntilDone();
+}
+
+function moveToCenter(element)
+{
+    x = element.offsetParent.offsetLeft + element.offsetLeft + element.offsetWidth / 2;
+    y = element.offsetParent.offsetTop + element.offsetTop + element.offsetHeight / 2;
+    eventSender.mouseMoveTo(x, y);
+}
+
+function runTest() {
+
+    var x, y;
+    var span = document.getElementById("span");
+    moveToCenter(span);
+    eventSender.mouseDown();
+    eventSender.leapForward(500);
+    var input = document.getElementById("target");
+    moveToCenter(input);
+    eventSender.leapForward(500);
+    eventSender.mouseUp();
+
+    input.contentWindow.postMessage("go", "*");
+}
+</script>
+</head>
+<body _onload_="runTest()">
+<span id="span"><a href=""
+<iframe id="target" src=""
+</body>
+</html>

Modified: trunk/Source/WebCore/ChangeLog (168635 => 168636)


--- trunk/Source/WebCore/ChangeLog	2014-05-12 19:23:47 UTC (rev 168635)
+++ trunk/Source/WebCore/ChangeLog	2014-05-12 19:47:12 UTC (rev 168636)
@@ -1,3 +1,16 @@
+2014-05-12  Martin Hock  <[email protected]>
+
+        Disallow drag and drop of non-displayable resources.
+        https://bugs.webkit.org/show_bug.cgi?id=132745
+        <rdar://problem/10562662>
+
+        Reviewed by Alexey Proskuryakov.
+
+        Test: http/tests/security/drag-drop-local-file.html
+
+        * page/DragController.cpp:
+        (WebCore::DragController::startDrag):
+
 2014-05-12  Jozsef Berta  <[email protected]>
 
         WinCairo buildfix after r168611

Modified: trunk/Source/WebCore/page/DragController.cpp (168635 => 168636)


--- trunk/Source/WebCore/page/DragController.cpp	2014-05-12 19:23:47 UTC (rev 168635)
+++ trunk/Source/WebCore/page/DragController.cpp	2014-05-12 19:47:12 UTC (rev 168636)
@@ -791,6 +791,9 @@
             m_dragOffset = IntPoint(dragOrigin.x() - dragLoc.x(), dragOrigin.y() - dragLoc.y());
         }
         doSystemDrag(dragImage, dragLoc, dragOrigin, dataTransfer, src, false);
+    } else if (!src.document()->securityOrigin()->canDisplay(linkURL)) {
+        src.document()->addConsoleMessage(MessageSource::Security, MessageLevel::Error, "Not allowed to drag local resource: " + linkURL.stringCenterEllipsizedToLength());
+        startedDrag = false;
     } else if (!imageURL.isEmpty() && image && !image->isNull() && (m_dragSourceAction & DragSourceActionImage)) {
         // We shouldn't be starting a drag for an image that can't provide an extension.
         // This is an early detection for problems encountered later upon drop.
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to