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