Title: [265723] trunk/Source/WebCore
Revision
265723
Author
[email protected]
Date
2020-08-14 17:35:42 -0700 (Fri, 14 Aug 2020)

Log Message

Crash inside FrameLoader::defaultRequestCachingPolicy (null DocumentLoader)
<rdar://problem/42167093> and https://bugs.webkit.org/show_bug.cgi?id=215527

Reviewed by Darin Adler.

We have CrashTracer data, but despite my best efforts no way of reproducing.

* loader/FrameLoader.cpp:
(WebCore::FrameLoader::defaultRequestCachingPolicy): If a PingLoader is sending a CSP violation
  report sometime after part of the Document's lifecycle, the FrameLoader as a null DocumentLoader here.
  Like everywhere else in FrameLoader, null check it.

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (265722 => 265723)


--- trunk/Source/WebCore/ChangeLog	2020-08-15 00:28:52 UTC (rev 265722)
+++ trunk/Source/WebCore/ChangeLog	2020-08-15 00:35:42 UTC (rev 265723)
@@ -1,3 +1,17 @@
+2020-08-14  Brady Eidson  <[email protected]>
+
+        Crash inside FrameLoader::defaultRequestCachingPolicy (null DocumentLoader)
+        <rdar://problem/42167093> and https://bugs.webkit.org/show_bug.cgi?id=215527
+
+        Reviewed by Darin Adler.
+
+        We have CrashTracer data, but despite my best efforts no way of reproducing.
+
+        * loader/FrameLoader.cpp:
+        (WebCore::FrameLoader::defaultRequestCachingPolicy): If a PingLoader is sending a CSP violation
+          report sometime after part of the Document's lifecycle, the FrameLoader as a null DocumentLoader here.
+          Like everywhere else in FrameLoader, null check it.
+
 2020-08-14  Zalan Bujtas  <[email protected]>
 
         RenderTextControlSingleLine::scroll* functions should not call Element::scroll* on the inner text content

Modified: trunk/Source/WebCore/loader/FrameLoader.cpp (265722 => 265723)


--- trunk/Source/WebCore/loader/FrameLoader.cpp	2020-08-15 00:28:52 UTC (rev 265722)
+++ trunk/Source/WebCore/loader/FrameLoader.cpp	2020-08-15 00:35:42 UTC (rev 265723)
@@ -2852,7 +2852,8 @@
     if (request.isConditional())
         return ResourceRequestCachePolicy::ReloadIgnoringCacheData;
 
-    if (documentLoader()->isLoadingInAPISense()) {
+    auto* documentLoader = this->documentLoader();
+    if (documentLoader && documentLoader->isLoadingInAPISense()) {
         // If we inherit cache policy from a main resource, we use the DocumentLoader's
         // original request cache policy for two reasons:
         // 1. For POST requests, we mutate the cache policy for the main resource,
@@ -2860,7 +2861,7 @@
         // 2. Delegates that modify the cache policy using willSendRequest: should
         //    not affect any other resources. Such changes need to be done
         //    per request.
-        ResourceRequestCachePolicy mainDocumentOriginalCachePolicy = documentLoader()->originalRequest().cachePolicy();
+        ResourceRequestCachePolicy mainDocumentOriginalCachePolicy = documentLoader->originalRequest().cachePolicy();
         // Back-forward navigations try to load main resource from cache only to avoid re-submitting form data, and start over (with a warning dialog) if that fails.
         // This policy is set on initial request too, but should not be inherited.
         return (mainDocumentOriginalCachePolicy == ResourceRequestCachePolicy::ReturnCacheDataDontLoad) ? ResourceRequestCachePolicy::ReturnCacheDataElseLoad : mainDocumentOriginalCachePolicy;
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to