Title: [227269] trunk/Source/WebKit
- Revision
- 227269
- Author
- cdu...@apple.com
- Date
- 2018-01-20 02:43:38 -0800 (Sat, 20 Jan 2018)
Log Message
DOMCache data sometimes not properly removed when clearing data for a given origin
https://bugs.webkit.org/show_bug.cgi?id=181887
<rdar://problem/36671239>
Reviewed by Youenn Fablet.
* NetworkProcess/cache/CacheStorageEngine.cpp:
(WebKit::CacheStorage::Engine::clearCachesForOrigin):
This code was iterating through folders on disk, then reading the folder's origin
from the origin file on disk. Then, if the origin would match the one we want to
delete, it would regenerate the folder path using cachesRootPath(*folderOrigin).
I don't know how but on my machine, I was ended up in a state where the path
generated by cachesRootPath(*folderOrigin) differed from the actual folder path
we read the origin from (Likely a different salt?). To make the code more robust,
I updated the code to delete "folderPath", which is the path we read the origin
from.
Modified Paths
Diff
Modified: trunk/Source/WebKit/ChangeLog (227268 => 227269)
--- trunk/Source/WebKit/ChangeLog 2018-01-20 08:42:08 UTC (rev 227268)
+++ trunk/Source/WebKit/ChangeLog 2018-01-20 10:43:38 UTC (rev 227269)
@@ -1,3 +1,22 @@
+2018-01-20 Chris Dumez <cdu...@apple.com>
+
+ DOMCache data sometimes not properly removed when clearing data for a given origin
+ https://bugs.webkit.org/show_bug.cgi?id=181887
+ <rdar://problem/36671239>
+
+ Reviewed by Youenn Fablet.
+
+ * NetworkProcess/cache/CacheStorageEngine.cpp:
+ (WebKit::CacheStorage::Engine::clearCachesForOrigin):
+ This code was iterating through folders on disk, then reading the folder's origin
+ from the origin file on disk. Then, if the origin would match the one we want to
+ delete, it would regenerate the folder path using cachesRootPath(*folderOrigin).
+ I don't know how but on my machine, I was ended up in a state where the path
+ generated by cachesRootPath(*folderOrigin) differed from the actual folder path
+ we read the origin from (Likely a different salt?). To make the code more robust,
+ I updated the code to delete "folderPath", which is the path we read the origin
+ from.
+
2018-01-19 Zach Li <zacharyli...@gmail.com>
Expose Safe Browsing SPI
Modified: trunk/Source/WebKit/NetworkProcess/cache/CacheStorageEngine.cpp (227268 => 227269)
--- trunk/Source/WebKit/NetworkProcess/cache/CacheStorageEngine.cpp 2018-01-20 08:42:08 UTC (rev 227268)
+++ trunk/Source/WebKit/NetworkProcess/cache/CacheStorageEngine.cpp 2018-01-20 10:43:38 UTC (rev 227269)
@@ -414,13 +414,13 @@
for (auto& folderPath : WebCore::FileSystem::listDirectory(m_rootPath, "*")) {
if (!WebCore::FileSystem::fileIsDirectory(folderPath, WebCore::FileSystem::ShouldFollowSymbolicLinks::No))
continue;
- Caches::retrieveOriginFromDirectory(folderPath, *m_ioQueue, [this, protectedThis = makeRef(*this), origin, taskHandler = makeRef(taskHandler)] (std::optional<WebCore::ClientOrigin>&& folderOrigin) mutable {
+ Caches::retrieveOriginFromDirectory(folderPath, *m_ioQueue, [this, protectedThis = makeRef(*this), origin, taskHandler = makeRef(taskHandler), folderPath] (std::optional<WebCore::ClientOrigin>&& folderOrigin) mutable {
if (!folderOrigin)
return;
if (folderOrigin->topOrigin != origin && folderOrigin->clientOrigin != origin)
return;
- m_ioQueue->dispatch([path = cachesRootPath(*folderOrigin), taskHandler = WTFMove(taskHandler)] {
+ m_ioQueue->dispatch([path = folderPath.isolatedCopy(), taskHandler = WTFMove(taskHandler)] {
deleteDirectoryRecursively(path);
});
});
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes