Title: [152756] trunk/Source/WebKit2
Revision
152756
Author
[email protected]
Date
2013-07-16 23:04:04 -0700 (Tue, 16 Jul 2013)

Log Message

setPluginUnavailabilityReason can destroy renderObject before obscurity check
https://bugs.webkit.org/show_bug.cgi?id=118770
<rdar://problem/14462331>

Patch by Gordon Sheridan <[email protected]> on 2013-07-16
Reviewed by Tim Horton.

* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::createPlugin):
Moved obscurity check to before renderObject is potentially destroyed.

Modified Paths

Diff

Modified: trunk/Source/WebKit2/ChangeLog (152755 => 152756)


--- trunk/Source/WebKit2/ChangeLog	2013-07-17 05:34:17 UTC (rev 152755)
+++ trunk/Source/WebKit2/ChangeLog	2013-07-17 06:04:04 UTC (rev 152756)
@@ -1,3 +1,15 @@
+2013-07-16  Gordon Sheridan  <[email protected]>
+
+        setPluginUnavailabilityReason can destroy renderObject before obscurity check
+        https://bugs.webkit.org/show_bug.cgi?id=118770
+        <rdar://problem/14462331>
+
+        Reviewed by Tim Horton.
+
+        * WebProcess/WebPage/WebPage.cpp:
+        (WebKit::WebPage::createPlugin):
+        Moved obscurity check to before renderObject is potentially destroyed.
+
 2013-07-16  Alexey Proskuryakov  <[email protected]>
 
         REGRESSION (r150291): Chinese predictive input pop-up disappears on twitter.com

Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp (152755 => 152756)


--- trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp	2013-07-17 05:34:17 UTC (rev 152755)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp	2013-07-17 06:04:04 UTC (rev 152756)
@@ -556,17 +556,13 @@
         bool replacementObscured = false;
         if (pluginElement->renderer()->isEmbeddedObject()) {
             RenderEmbeddedObject* renderObject = toRenderEmbeddedObject(pluginElement->renderer());
+            replacementObscured = renderObject->isReplacementObscured();
+            
+            // setPluginUnavailabilityReason can cause a reattach, which means that our RenderEmbeddedObject might get destroyed, so it is important to check obscurity first
             renderObject->setPluginUnavailabilityReasonDescription(unavailabilityDescription);
             renderObject->setPluginUnavailabilityReason(RenderEmbeddedObject::InsecurePluginVersion);
         }
 
-        // setPluginUnavailabilityReason can cause a reattach, which means that our RenderEmbeddedObject has been destroyed, so re-acquire it.
-
-        if (pluginElement->renderer() && pluginElement->renderer()->isEmbeddedObject()) {
-            RenderEmbeddedObject* renderObject = toRenderEmbeddedObject(pluginElement->renderer());
-            replacementObscured = renderObject->isReplacementObscured();
-        }
-
         send(Messages::WebPageProxy::DidBlockInsecurePluginVersion(parameters.mimeType, parameters.url.string(), frameURLString, pageURLString, replacementObscured));
         return 0;
     }
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to