Title: [98934] trunk
Revision
98934
Author
commit-qu...@webkit.org
Date
2011-10-31 20:37:51 -0700 (Mon, 31 Oct 2011)

Log Message

V8MessageEvent::dataAccessorGetter does not return a reference to its caller
https://bugs.webkit.org/show_bug.cgi?id=71229

Patch by Dave Michael <dmich...@chromium.org> on 2011-10-31
Reviewed by Adam Barth.

Test: fast/events/dispatch-message-string-data.html

* bindings/v8/custom/V8MessageEventCustom.cpp:
(WebCore::V8MessageEvent::dataAccessorGetter):

Modified Paths

Added Paths

Diff

Added: trunk/LayoutTests/fast/events/dispatch-message-string-data-expected.txt (0 => 98934)


--- trunk/LayoutTests/fast/events/dispatch-message-string-data-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/fast/events/dispatch-message-string-data-expected.txt	2011-11-01 03:37:51 UTC (rev 98934)
@@ -0,0 +1,4 @@
+This is a test for https://bugs.webkit.org/show_bug.cgi?id=71229 (V8MessageEvent::dataAccessorGetter does not return a reference to its caller). If it succeeds, DONE will appear below. If it fails, you should see messages containing unexpected strings that were received and/or a renderer crash.
+
+DONE
+

Added: trunk/LayoutTests/fast/events/dispatch-message-string-data.html (0 => 98934)


--- trunk/LayoutTests/fast/events/dispatch-message-string-data.html	                        (rev 0)
+++ trunk/LayoutTests/fast/events/dispatch-message-string-data.html	2011-11-01 03:37:51 UTC (rev 98934)
@@ -0,0 +1,67 @@
+<!DOCTYPE html>
+<html>
+<head>
+<p>This is a test for https://bugs.webkit.org/show_bug.cgi?id=71229 (V8MessageEvent::dataAccessorGetter does not return a reference to its caller). If it succeeds, DONE will appear below. If it fails, you should see messages containing unexpected strings that were received and/or a renderer crash.
+<hr>
+<pre id=log></pre>
+<script>
+function log(message)
+{
+    document.getElementById("log").innerHTML += message + "<br>";
+}
+
+var eventTarget;
+
+// Make a long prefix string. This seems to make it more likely that a use-
+// after-free problem will cause an observable error.
+var kPrefix = "Hello";
+for (var i = 0; i < 10; ++i)
+    kPrefix += kPrefix;
+var num = 0;
+var endNum = 1000;
+function HandleMessage(message_event) {
+    if (message_event.data !== kPrefix + num.toString()) {
+        log("Expected '" + num + "', Got: '" + message_event.data + "'");
+    }
+    if (num == endNum) {
+        layoutTestController.notifyDone();
+    }
+    else {
+        ++num;
+        setTimeout(SendString, 0);
+    }
+}
+
+function SendString() {
+    var target = document.getElementById("event_target");
+    var message_event = window.document.createEvent('MessageEvent');
+    message_event.initMessageEvent('message',  // type
+                                   false,  // canBubble
+                                   false,  // cancelable
+                                   kPrefix + num.toString(),  // data
+                                   '',  // origin [*]
+                                   '',  // lastEventId
+                                   null,  // source [*]
+                                   []);  // ports
+    target.dispatchEvent(message_event);
+}
+
+function AddListener() {
+    var target = document.getElementById("event_target");
+    target.addEventListener("message", HandleMessage, false);
+    SendString();
+}
+document.addEventListener("DOMContentLoaded", AddListener, false);
+
+if (window.layoutTestController) {
+    layoutTestController.dumpAsText();
+    layoutTestController.waitUntilDone();
+}
+log("DONE");
+
+</script>
+</head>
+<body>
+<div id="event_target"></div>
+</body>
+</html>

Modified: trunk/Source/WebCore/ChangeLog (98933 => 98934)


--- trunk/Source/WebCore/ChangeLog	2011-11-01 01:47:17 UTC (rev 98933)
+++ trunk/Source/WebCore/ChangeLog	2011-11-01 03:37:51 UTC (rev 98934)
@@ -1,3 +1,15 @@
+2011-10-31  Dave Michael  <dmich...@chromium.org>
+
+        V8MessageEvent::dataAccessorGetter does not return a reference to its caller
+        https://bugs.webkit.org/show_bug.cgi?id=71229
+
+        Reviewed by Adam Barth.
+
+        Test: fast/events/dispatch-message-string-data.html
+
+        * bindings/v8/custom/V8MessageEventCustom.cpp:
+        (WebCore::V8MessageEvent::dataAccessorGetter):
+
 2011-10-31  Renata Hodovan  <r...@webkit.org>
 
         [Qt] Build fix after r98853.

Modified: trunk/Source/WebCore/bindings/v8/custom/V8MessageEventCustom.cpp (98933 => 98934)


--- trunk/Source/WebCore/bindings/v8/custom/V8MessageEventCustom.cpp	2011-11-01 01:47:17 UTC (rev 98933)
+++ trunk/Source/WebCore/bindings/v8/custom/V8MessageEventCustom.cpp	2011-11-01 03:37:51 UTC (rev 98934)
@@ -56,7 +56,7 @@
         if (scriptValue.hasNoValue())
             result = v8::Null();
         else
-            result = scriptValue.v8Value();
+            result = v8::Local<v8::Value>::New(scriptValue.v8Value());
         break;
     }
 
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to