Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Network process crashes in WebKit::StorageManagerSet::deleteSessionSt…
…orageForOrigins

https://bugs.webkit.org/show_bug.cgi?id=214050

Patch by Sihui Liu <sihui_liu@appe.com> on 2020-07-07
Reviewed by Chris Dumez.

In NetworkProcess::deleteAndRestrictWebsiteDataForRegistrableDomains, deleteSessionStorageForOrigins is called
in a callback without checking if session still exists.

* NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::deleteAndRestrictWebsiteDataForRegistrableDomains):

Canonical link: https://commits.webkit.org/226849@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@264036 268f45cc-cd09-0410-ab3c-d52691b4dbfc
  • Loading branch information
szewai authored and webkit-commit-queue committed Jul 7, 2020
1 parent f43b0de commit f1786f7
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 0 deletions.
13 changes: 13 additions & 0 deletions Source/WebKit/ChangeLog
@@ -1,3 +1,16 @@
2020-07-07 Sihui Liu <sihui_liu@appe.com>

Network process crashes in WebKit::StorageManagerSet::deleteSessionStorageForOrigins
https://bugs.webkit.org/show_bug.cgi?id=214050

Reviewed by Chris Dumez.

In NetworkProcess::deleteAndRestrictWebsiteDataForRegistrableDomains, deleteSessionStorageForOrigins is called
in a callback without checking if session still exists.

* NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::deleteAndRestrictWebsiteDataForRegistrableDomains):

2020-07-07 Chris Dumez <cdumez@apple.com>

WebContent process sometimes kills itself because it is receiving too much IPC from the UIProcess
Expand Down
6 changes: 6 additions & 0 deletions Source/WebKit/NetworkProcess/NetworkProcess.cpp
Expand Up @@ -1925,13 +1925,19 @@ void NetworkProcess::deleteAndRestrictWebsiteDataForRegistrableDomains(PAL::Sess
if (m_storageManagerSet->contains(sessionID)) {
if (websiteDataTypes.contains(WebsiteDataType::SessionStorage)) {
m_storageManagerSet->getSessionStorageOrigins(sessionID, [protectedThis = makeRef(*this), this, sessionID, callbackAggregator, domainsToDeleteAllNonCookieWebsiteDataFor](auto&& origins) {
if (!m_storageManagerSet->contains(sessionID))
return;

auto originsToDelete = filterForRegistrableDomains(origins, domainsToDeleteAllNonCookieWebsiteDataFor, callbackAggregator->m_domains);
m_storageManagerSet->deleteSessionStorageForOrigins(sessionID, originsToDelete, [callbackAggregator] { });
});
}

if (websiteDataTypes.contains(WebsiteDataType::LocalStorage)) {
m_storageManagerSet->getLocalStorageOrigins(sessionID, [protectedThis = makeRef(*this), this, sessionID, callbackAggregator, domainsToDeleteAllNonCookieWebsiteDataFor](auto&& origins) {
if (!m_storageManagerSet->contains(sessionID))
return;

auto originsToDelete = filterForRegistrableDomains(origins, domainsToDeleteAllNonCookieWebsiteDataFor, callbackAggregator->m_domains);
m_storageManagerSet->deleteLocalStorageForOrigins(sessionID, originsToDelete, [callbackAggregator] { });
});
Expand Down

0 comments on commit f1786f7

Please sign in to comment.