Changeset 248987 in webkit
- Timestamp:
- Aug 21, 2019, 6:25:43 PM (7 years ago)
- Location:
- branches/safari-608-branch/Source/WebKit
- Files:
-
- 2 edited
-
ChangeLog (modified) (1 diff)
-
NetworkProcess/NetworkProcess.cpp (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/safari-608-branch/Source/WebKit/ChangeLog
r248937 r248987 1 2019-08-21 Kocsen Chung <kocsen_chung@apple.com> 2 3 Cherry-pick r248959. rdar://problem/54579630 4 5 Crash under StringImpl::~StringImpl() in NetworkProcess::deleteWebsiteDataForRegistrableDomains() 6 https://bugs.webkit.org/show_bug.cgi?id=200986 7 <rdar://problem/32850192> 8 9 Reviewed by Brent Fulgham. 10 11 Code was calling postStorageTask() with a lambda that captures Strings that are not isolated copied. 12 The lambda would get executed on another thread so this is not safe. The CrossThreadTask constructor 13 does not take care of this for you, despite its name (the createCrossThreadTask() function does though). 14 15 * NetworkProcess/NetworkProcess.cpp: 16 (WebKit::NetworkProcess::fetchWebsiteData): 17 (WebKit::NetworkProcess::deleteWebsiteDataForRegistrableDomains): 18 (WebKit::NetworkProcess::registrableDomainsWithWebsiteData): 19 20 21 git-svn-id: https://svn.webkit.org/repository/webkit/trunk@248959 268f45cc-cd09-0410-ab3c-d52691b4dbfc 22 23 2019-08-21 Chris Dumez <cdumez@apple.com> 24 25 Crash under StringImpl::~StringImpl() in NetworkProcess::deleteWebsiteDataForRegistrableDomains() 26 https://bugs.webkit.org/show_bug.cgi?id=200986 27 <rdar://problem/32850192> 28 29 Reviewed by Brent Fulgham. 30 31 Code was calling postStorageTask() with a lambda that captures Strings that are not isolated copied. 32 The lambda would get executed on another thread so this is not safe. The CrossThreadTask constructor 33 does not take care of this for you, despite its name (the createCrossThreadTask() function does though). 34 35 * NetworkProcess/NetworkProcess.cpp: 36 (WebKit::NetworkProcess::fetchWebsiteData): 37 (WebKit::NetworkProcess::deleteWebsiteDataForRegistrableDomains): 38 (WebKit::NetworkProcess::registrableDomainsWithWebsiteData): 39 1 40 2019-08-20 Babak Shafiei <bshafiei@apple.com> 2 41 -
branches/safari-608-branch/Source/WebKit/NetworkProcess/NetworkProcess.cpp
r247283 r248987 1340 1340 if (!path.isEmpty() && websiteDataTypes.contains(WebsiteDataType::IndexedDBDatabases)) { 1341 1341 // FIXME: Pick the right database store based on the session ID. 1342 postStorageTask(CrossThreadTask([this, callbackAggregator = callbackAggregator.copyRef(), path = WTFMove(path)]() mutable {1342 postStorageTask(CrossThreadTask([this, callbackAggregator = callbackAggregator.copyRef(), path = crossThreadCopy(path)]() mutable { 1343 1343 RunLoop::main().dispatch([callbackAggregator = WTFMove(callbackAggregator), securityOrigins = indexedDatabaseOrigins(path)] { 1344 1344 for (const auto& securityOrigin : securityOrigins) … … 1718 1718 if (!path.isEmpty() && websiteDataTypes.contains(WebsiteDataType::IndexedDBDatabases)) { 1719 1719 // FIXME: Pick the right database store based on the session ID. 1720 postStorageTask(CrossThreadTask([this, sessionID, callbackAggregator = callbackAggregator.copyRef(), path = WTFMove(path), domainsToDeleteAllButCookiesFor]() mutable {1721 RunLoop::main().dispatch([this, sessionID, domainsToDeleteAllButCookiesFor = crossThreadCopy(domainsToDeleteAllButCookiesFor), callbackAggregator = callbackAggregator.copyRef(), securityOrigins = indexedDatabaseOrigins(path)] {1720 postStorageTask(CrossThreadTask([this, sessionID, callbackAggregator = callbackAggregator.copyRef(), path = crossThreadCopy(path), domainsToDeleteAllButCookiesFor = crossThreadCopy(domainsToDeleteAllButCookiesFor)]() mutable { 1721 RunLoop::main().dispatch([this, sessionID, domainsToDeleteAllButCookiesFor = WTFMove(domainsToDeleteAllButCookiesFor), callbackAggregator = callbackAggregator.copyRef(), securityOrigins = indexedDatabaseOrigins(path)] { 1722 1722 Vector<SecurityOriginData> entriesToDelete; 1723 1723 for (const auto& securityOrigin : securityOrigins) { … … 1863 1863 if (!path.isEmpty() && websiteDataTypes.contains(WebsiteDataType::IndexedDBDatabases)) { 1864 1864 // FIXME: Pick the right database store based on the session ID. 1865 postStorageTask(CrossThreadTask([this, callbackAggregator = callbackAggregator.copyRef(), path = WTFMove(path)]() mutable {1865 postStorageTask(CrossThreadTask([this, callbackAggregator = callbackAggregator.copyRef(), path = crossThreadCopy(path)]() mutable { 1866 1866 RunLoop::main().dispatch([callbackAggregator = callbackAggregator.copyRef(), securityOrigins = indexedDatabaseOrigins(path)] { 1867 1867 for (const auto& securityOrigin : securityOrigins)
Note:
See TracChangeset
for help on using the changeset viewer.