Title: [241538] releases/WebKitGTK/webkit-2.24
Revision
241538
Author
[email protected]
Date
2019-02-14 03:28:42 -0800 (Thu, 14 Feb 2019)

Log Message

Merge r241500 - Crash in WKBundleFrameGetParentFrame when called inside didRemoveFrameFromHierarchy
https://bugs.webkit.org/show_bug.cgi?id=194641

Reviewed by Geoffrey Garen.

Source/WebKit:

Fixed the bug by adding a null check to WebFrame::parentFrame.

* WebProcess/WebPage/WebFrame.cpp:
(WebKit::WebFrame::parentFrame const):

Tools:

Added a call to WKBundleFrameGetParentFrame to an existing test for didRemoveFrameFromHierarchy
so that the test would fail without this fix.

* TestWebKitAPI/Tests/WebKit/DidRemoveFrameFromHiearchyInPageCache_Bundle.cpp:
(TestWebKitAPI::didRemoveFrameFromHierarchyCallback):

Modified Paths

Diff

Modified: releases/WebKitGTK/webkit-2.24/Source/WebKit/ChangeLog (241537 => 241538)


--- releases/WebKitGTK/webkit-2.24/Source/WebKit/ChangeLog	2019-02-14 11:28:36 UTC (rev 241537)
+++ releases/WebKitGTK/webkit-2.24/Source/WebKit/ChangeLog	2019-02-14 11:28:42 UTC (rev 241538)
@@ -1,3 +1,15 @@
+2019-02-13  Ryosuke Niwa  <[email protected]>
+
+        Crash in WKBundleFrameGetParentFrame when called inside didRemoveFrameFromHierarchy
+        https://bugs.webkit.org/show_bug.cgi?id=194641
+
+        Reviewed by Geoffrey Garen.
+
+        Fixed the bug by adding a null check to WebFrame::parentFrame.
+
+        * WebProcess/WebPage/WebFrame.cpp:
+        (WebKit::WebFrame::parentFrame const):
+
 2019-02-12  Jiewen Tan  <[email protected]>
 
         Further restricting webarchive loads

Modified: releases/WebKitGTK/webkit-2.24/Source/WebKit/WebProcess/WebPage/WebFrame.cpp (241537 => 241538)


--- releases/WebKitGTK/webkit-2.24/Source/WebKit/WebProcess/WebPage/WebFrame.cpp	2019-02-14 11:28:36 UTC (rev 241537)
+++ releases/WebKitGTK/webkit-2.24/Source/WebKit/WebProcess/WebPage/WebFrame.cpp	2019-02-14 11:28:42 UTC (rev 241538)
@@ -463,9 +463,13 @@
 WebFrame* WebFrame::parentFrame() const
 {
     if (!m_coreFrame || !m_coreFrame->ownerElement())
-        return 0;
+        return nullptr;
 
-    return WebFrame::fromCoreFrame(*m_coreFrame->ownerElement()->document().frame());
+    auto* frame = m_coreFrame->ownerElement()->document().frame();
+    if (!frame)
+        return nullptr;
+
+    return WebFrame::fromCoreFrame(*frame);
 }
 
 Ref<API::Array> WebFrame::childFrames()

Modified: releases/WebKitGTK/webkit-2.24/Tools/ChangeLog (241537 => 241538)


--- releases/WebKitGTK/webkit-2.24/Tools/ChangeLog	2019-02-14 11:28:36 UTC (rev 241537)
+++ releases/WebKitGTK/webkit-2.24/Tools/ChangeLog	2019-02-14 11:28:42 UTC (rev 241538)
@@ -1,3 +1,16 @@
+2019-02-13  Ryosuke Niwa  <[email protected]>
+
+        Crash in WKBundleFrameGetParentFrame when called inside didRemoveFrameFromHierarchy
+        https://bugs.webkit.org/show_bug.cgi?id=194641
+
+        Reviewed by Geoffrey Garen.
+
+        Added a call to WKBundleFrameGetParentFrame to an existing test for didRemoveFrameFromHierarchy
+        so that the test would fail without this fix.
+
+        * TestWebKitAPI/Tests/WebKit/DidRemoveFrameFromHiearchyInPageCache_Bundle.cpp:
+        (TestWebKitAPI::didRemoveFrameFromHierarchyCallback):
+
 2019-02-12  Jiewen Tan  <[email protected]>
 
         Further restricting webarchive loads

Modified: releases/WebKitGTK/webkit-2.24/Tools/TestWebKitAPI/Tests/WebKit/DidRemoveFrameFromHiearchyInPageCache_Bundle.cpp (241537 => 241538)


--- releases/WebKitGTK/webkit-2.24/Tools/TestWebKitAPI/Tests/WebKit/DidRemoveFrameFromHiearchyInPageCache_Bundle.cpp	2019-02-14 11:28:36 UTC (rev 241537)
+++ releases/WebKitGTK/webkit-2.24/Tools/TestWebKitAPI/Tests/WebKit/DidRemoveFrameFromHiearchyInPageCache_Bundle.cpp	2019-02-14 11:28:42 UTC (rev 241538)
@@ -30,6 +30,7 @@
 #include "InjectedBundleTest.h"
 
 #include "PlatformUtilities.h"
+#include <WebKit/WKBundleFrame.h>
 #include <WebKit/WKBundlePage.h>
 
 namespace TestWebKitAPI {
@@ -45,10 +46,12 @@
 
 static unsigned didRemoveFrameFromHierarchyCount;
 
-void didRemoveFrameFromHierarchyCallback(WKBundlePageRef page, WKBundleFrameRef, WKTypeRef*, const void*)
+void didRemoveFrameFromHierarchyCallback(WKBundlePageRef page, WKBundleFrameRef frame, WKTypeRef*, const void*)
 {
     didRemoveFrameFromHierarchyCount++;
 
+    RELEASE_ASSERT(!WKBundleFrameGetParentFrame(frame));
+
     WKRetainPtr<WKStringRef> message(AdoptWK, WKStringCreateWithUTF8CString("DidRemoveFrameFromHierarchy"));
     WKBundlePagePostMessage(page, message.get(), message.get());
 }
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to