Title: [279597] trunk/Source/WebKit
Revision
279597
Author
achristen...@apple.com
Date
2021-07-06 10:40:57 -0700 (Tue, 06 Jul 2021)

Log Message

Make Caches::writeRecord and Caches::readRecord more robust
https://bugs.webkit.org/show_bug.cgi?id=221620

Reviewed by Youenn Fablet.

I saw null dereferenced in EWS, and everywhere else we check m_storage for null.
Some events happen during teardown.  No reason to crash.

* NetworkProcess/cache/CacheStorageEngineCaches.cpp:
(WebKit::CacheStorage::Caches::writeRecord):
(WebKit::CacheStorage::Caches::readRecord):

Modified Paths

Diff

Modified: trunk/Source/WebKit/ChangeLog (279596 => 279597)


--- trunk/Source/WebKit/ChangeLog	2021-07-06 17:38:48 UTC (rev 279596)
+++ trunk/Source/WebKit/ChangeLog	2021-07-06 17:40:57 UTC (rev 279597)
@@ -1,5 +1,19 @@
 2021-07-06  Alex Christensen  <achristen...@webkit.org>
 
+        Make Caches::writeRecord and Caches::readRecord more robust
+        https://bugs.webkit.org/show_bug.cgi?id=221620
+
+        Reviewed by Youenn Fablet.
+
+        I saw null dereferenced in EWS, and everywhere else we check m_storage for null.
+        Some events happen during teardown.  No reason to crash.
+
+        * NetworkProcess/cache/CacheStorageEngineCaches.cpp:
+        (WebKit::CacheStorage::Caches::writeRecord):
+        (WebKit::CacheStorage::Caches::readRecord):
+
+2021-07-06  Alex Christensen  <achristen...@webkit.org>
+
         loadSimulatedRequest: should do same delegate callbacks as loadHTMLString and loadData
         https://bugs.webkit.org/show_bug.cgi?id=227599
 

Modified: trunk/Source/WebKit/NetworkProcess/cache/CacheStorageEngineCaches.cpp (279596 => 279597)


--- trunk/Source/WebKit/NetworkProcess/cache/CacheStorageEngineCaches.cpp	2021-07-06 17:38:48 UTC (rev 279596)
+++ trunk/Source/WebKit/NetworkProcess/cache/CacheStorageEngineCaches.cpp	2021-07-06 17:40:57 UTC (rev 279597)
@@ -549,6 +549,9 @@
         return;
     }
 
+    if (!m_storage)
+        return callback(WTF::nullopt);
+
     m_storage->store(Cache::encode(recordInformation, record), { }, [this, protectedThis = makeRef(*this), protectedStorage = makeRef(*m_storage), callback = WTFMove(callback)](int error) mutable {
         if (error) {
             RELEASE_LOG_ERROR(CacheStorage, "Caches::writeRecord failed with error %d", error);
@@ -571,6 +574,9 @@
         return callback(makeUnexpected(Error::Internal));
     }
 
+    if (!m_storage)
+        return callback(makeUnexpected(Error::Internal));
+
     m_storage->retrieve(key, 4, [protectedStorage = makeRef(*m_storage), callback = WTFMove(callback)](std::unique_ptr<Storage::Record> storage, const Storage::Timings&) mutable {
         if (!storage) {
             RELEASE_LOG_ERROR(CacheStorage, "Caches::readRecord failed reading record from disk");
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to