Title: [136554] trunk
Revision
136554
Author
jchaffr...@webkit.org
Date
2012-12-04 13:10:03 -0800 (Tue, 04 Dec 2012)

Log Message

Heap-use-after-free in WebCore::RenderLayer::paintList [MathML]
https://bugs.webkit.org/show_bug.cgi?id=100764

Reviewed by Eric Seidel.

Source/WebCore:

Test: mathml/mfenced-root-layer.html

* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::stackingContext):
Fixed this function to ensure that it always returns a stacking context, the bug
was that the document element's layer wasn't guaranteed to be a stacking context.

LayoutTests:

* mathml/mfenced-root-layer-expected.txt: Added.
* mathml/mfenced-root-layer.html: Added.

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (136553 => 136554)


--- trunk/LayoutTests/ChangeLog	2012-12-04 21:07:45 UTC (rev 136553)
+++ trunk/LayoutTests/ChangeLog	2012-12-04 21:10:03 UTC (rev 136554)
@@ -1,3 +1,13 @@
+2012-12-04  Julien Chaffraix  <jchaffr...@webkit.org>
+
+        Heap-use-after-free in WebCore::RenderLayer::paintList [MathML]
+        https://bugs.webkit.org/show_bug.cgi?id=100764
+
+        Reviewed by Eric Seidel.
+
+        * mathml/mfenced-root-layer-expected.txt: Added.
+        * mathml/mfenced-root-layer.html: Added.
+
 2012-12-04  Roger Fong  <roger_f...@apple.com>
 
         Unreviewed gardening. Skip fast/loader/non-deferred-substitute-load.html on Windows port.

Added: trunk/LayoutTests/mathml/mfenced-root-layer-expected.txt (0 => 136554)


--- trunk/LayoutTests/mathml/mfenced-root-layer-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/mathml/mfenced-root-layer-expected.txt	2012-12-04 21:10:03 UTC (rev 136554)
@@ -0,0 +1,2 @@
+Bug 100764: Heap-use-after-free in WebCore::RenderLayer::paintList [MathML]
+This test passes if it does not crash.
Property changes on: trunk/LayoutTests/mathml/mfenced-root-layer-expected.txt
___________________________________________________________________

Added: svn:eol-style

Added: trunk/LayoutTests/mathml/mfenced-root-layer.html (0 => 136554)


--- trunk/LayoutTests/mathml/mfenced-root-layer.html	                        (rev 0)
+++ trunk/LayoutTests/mathml/mfenced-root-layer.html	2012-12-04 21:10:03 UTC (rev 136554)
@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+<script>
+    if (window.testRunner)
+        testRunner.dumpAsText();
+
+    var mfenced = document.createElementNS("http://www.w3.org/1998/Math/MathML", "mfenced");
+
+    var docElt = document.documentElement;
+    docElt.parentNode.removeChild(docElt);
+
+    document.appendChild(mfenced);
+
+    var e = document.createElement("div");
+    e.innerHTML = "<a href=''>Bug 100764</a>: Heap-use-after-free in WebCore::RenderLayer::paintList [MathML]<br>This test passes if it does not crash.";
+    mfenced.appendChild(e);
+</script>
Property changes on: trunk/LayoutTests/mathml/mfenced-root-layer.html
___________________________________________________________________

Added: svn:eol-style

Modified: trunk/Source/WebCore/ChangeLog (136553 => 136554)


--- trunk/Source/WebCore/ChangeLog	2012-12-04 21:07:45 UTC (rev 136553)
+++ trunk/Source/WebCore/ChangeLog	2012-12-04 21:10:03 UTC (rev 136554)
@@ -1,3 +1,17 @@
+2012-12-04  Julien Chaffraix  <jchaffr...@webkit.org>
+
+        Heap-use-after-free in WebCore::RenderLayer::paintList [MathML]
+        https://bugs.webkit.org/show_bug.cgi?id=100764
+
+        Reviewed by Eric Seidel.
+
+        Test: mathml/mfenced-root-layer.html
+
+        * rendering/RenderLayer.cpp:
+        (WebCore::RenderLayer::stackingContext):
+        Fixed this function to ensure that it always returns a stacking context, the bug
+        was that the document element's layer wasn't guaranteed to be a stacking context.
+
 2012-12-04  Adam Barth  <aba...@webkit.org>
 
         [V8] GetNativeType in CodeGeneratorV8.pm needs a bath

Modified: trunk/Source/WebCore/rendering/RenderLayer.cpp (136553 => 136554)


--- trunk/Source/WebCore/rendering/RenderLayer.cpp	2012-12-04 21:07:45 UTC (rev 136553)
+++ trunk/Source/WebCore/rendering/RenderLayer.cpp	2012-12-04 21:10:03 UTC (rev 136554)
@@ -981,8 +981,10 @@
 RenderLayer* RenderLayer::stackingContext() const
 {
     RenderLayer* layer = parent();
-    while (layer && !layer->isRootLayer() && !layer->renderer()->isRoot() && layer->renderer()->style()->hasAutoZIndex())
+    while (layer && !layer->isStackingContext())
         layer = layer->parent();
+
+    ASSERT(!layer || layer->isStackingContext());
     return layer;
 }
 
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to