Title: [248963] trunk/Source/WebKit
Revision
248963
Author
cdu...@apple.com
Date
2019-08-21 14:30:03 -0700 (Wed, 21 Aug 2019)

Log Message

Have NetworkCache::store() null check its completion handler before calling it
https://bugs.webkit.org/show_bug.cgi?id=200994

Reviewed by Geoffrey Garen.

* NetworkProcess/NetworkResourceLoader.cpp:
(WebKit::NetworkResourceLoader::retrieveCacheEntry):
Stop passing nullptr for the completion handler now that the parameter has a default value.
Note that passing nullptr here was likely wrong since the NetworkCache::store() implementation
did not null-check the completion handler before calling it.

* NetworkProcess/cache/NetworkCache.cpp:
(WebKit::NetworkCache::Cache::store):
Have NetworkCache::store() null check its completion handler before calling it as calling
a null WTF::Function crashes.

* NetworkProcess/cache/NetworkCache.h:
Use nullptr as default parameter value for the completion handler.

Modified Paths

Diff

Modified: trunk/Source/WebKit/ChangeLog (248962 => 248963)


--- trunk/Source/WebKit/ChangeLog	2019-08-21 21:29:52 UTC (rev 248962)
+++ trunk/Source/WebKit/ChangeLog	2019-08-21 21:30:03 UTC (rev 248963)
@@ -1,3 +1,24 @@
+2019-08-21  Chris Dumez  <cdu...@apple.com>
+
+        Have NetworkCache::store() null check its completion handler before calling it
+        https://bugs.webkit.org/show_bug.cgi?id=200994
+
+        Reviewed by Geoffrey Garen.
+
+        * NetworkProcess/NetworkResourceLoader.cpp:
+        (WebKit::NetworkResourceLoader::retrieveCacheEntry):
+        Stop passing nullptr for the completion handler now that the parameter has a default value.
+        Note that passing nullptr here was likely wrong since the NetworkCache::store() implementation
+        did not null-check the completion handler before calling it.
+
+        * NetworkProcess/cache/NetworkCache.cpp:
+        (WebKit::NetworkCache::Cache::store):
+        Have NetworkCache::store() null check its completion handler before calling it as calling
+        a null WTF::Function crashes.
+
+        * NetworkProcess/cache/NetworkCache.h:
+        Use nullptr as default parameter value for the completion handler.
+
 2019-08-21  Rob Buis  <rb...@igalia.com>
 
         Verify Prefetch and credential behavior

Modified: trunk/Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp (248962 => 248963)


--- trunk/Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp	2019-08-21 21:29:52 UTC (rev 248962)
+++ trunk/Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp	2019-08-21 21:30:03 UTC (rev 248963)
@@ -231,7 +231,7 @@
                 auto buffer = entry->releaseBuffer();
                 auto cacheEntry = m_cache->makeEntry(request, entry->response, buffer.copyRef());
                 retrieveCacheEntryInternal(WTFMove(cacheEntry), ResourceRequest { request });
-                m_cache->store(request, entry->response, WTFMove(buffer), nullptr);
+                m_cache->store(request, entry->response, WTFMove(buffer));
                 return;
             }
         }

Modified: trunk/Source/WebKit/NetworkProcess/cache/NetworkCache.cpp (248962 => 248963)


--- trunk/Source/WebKit/NetworkProcess/cache/NetworkCache.cpp	2019-08-21 21:29:52 UTC (rev 248962)
+++ trunk/Source/WebKit/NetworkProcess/cache/NetworkCache.cpp	2019-08-21 21:30:03 UTC (rev 248963)
@@ -415,7 +415,8 @@
             mappedBody.shareableResource->createHandle(mappedBody.shareableResourceHandle);
         }
 #endif
-        completionHandler(mappedBody);
+        if (completionHandler)
+            completionHandler(mappedBody);
         LOG(NetworkCache, "(NetworkProcess) stored");
     });
 

Modified: trunk/Source/WebKit/NetworkProcess/cache/NetworkCache.h (248962 => 248963)


--- trunk/Source/WebKit/NetworkProcess/cache/NetworkCache.h	2019-08-21 21:29:52 UTC (rev 248962)
+++ trunk/Source/WebKit/NetworkProcess/cache/NetworkCache.h	2019-08-21 21:30:03 UTC (rev 248963)
@@ -115,7 +115,7 @@
     };
     using RetrieveCompletionHandler = Function<void(std::unique_ptr<Entry>, const RetrieveInfo&)>;
     void retrieve(const WebCore::ResourceRequest&, const GlobalFrameID&, RetrieveCompletionHandler&&);
-    std::unique_ptr<Entry> store(const WebCore::ResourceRequest&, const WebCore::ResourceResponse&, RefPtr<WebCore::SharedBuffer>&&, Function<void(MappedBody&)>&&);
+    std::unique_ptr<Entry> store(const WebCore::ResourceRequest&, const WebCore::ResourceResponse&, RefPtr<WebCore::SharedBuffer>&&, Function<void(MappedBody&)>&& = nullptr);
     std::unique_ptr<Entry> storeRedirect(const WebCore::ResourceRequest&, const WebCore::ResourceResponse&, const WebCore::ResourceRequest& redirectRequest, Optional<Seconds> maxAgeCap);
     std::unique_ptr<Entry> update(const WebCore::ResourceRequest&, const GlobalFrameID&, const Entry&, const WebCore::ResourceResponse& validatingResponse);
 
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to