Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 2d83a1557ecb11064ff28a5078f31680c4505ade
https://github.com/WebKit/WebKit/commit/2d83a1557ecb11064ff28a5078f31680c4505ade
Author: Nitin Mahendru <[email protected]>
Date: 2024-12-20 (Fri, 20 Dec 2024)
Changed paths:
A
LayoutTests/storage/filesystemaccess/filesystem-directory-handle-rename-expected.txt
A
LayoutTests/storage/filesystemaccess/filesystem-directory-handle-rename.html
M Source/WTF/wtf/FileSystem.cpp
M Source/WTF/wtf/FileSystem.h
M Tools/TestWebKitAPI/Tests/WTF/FileSystem.cpp
Log Message:
-----------
std::filesystem::copy should not be used to recursively copy parent into it's
child.
https://bugs.webkit.org/show_bug.cgi?id=281280
rdar://137177339
Reviewed by Sihui Liu and Alex Christensen.
The added test case filesystem-directory-handle-rename.html will cause
std::filesystem::copy to be
called with top OPFS FileSystem directory being copied into itself under a
subdirectory with name `\u0480`.
This will cause a recursive directory tree to be generated inside the root
storage directory.
If FileSystem::directorySize() is called over that directory, it will abort
with `Too many open files`.
The Unicode `\u0480` has no significance but just a weird character to use for
the file name.
If you see this, It should raise questions. Thus the choice.
The same error will happen if we choose "anyRandomAsciiName".
The fix added here will prevent std::filesystem::copy to be called in case
source is ancestor of destination.
* LayoutTests/storage/filesystemaccess/filesystem-directory-handle-rename.html:
Added.
* Source/WTF/wtf/FileSystem.cpp:
(WTF::FileSystemImpl::isAncestor):
* Source/WTF/wtf/FileSystem.h:
* Source/WebKit/NetworkProcess/storage/FileSystemStorageHandle.cpp:
(WebKit::FileSystemStorageHandle::move):
* Tools/TestWebKitAPI/Tests/WTF/FileSystem.cpp:
(TestWebKitAPI::TEST_F(FileSystemTest, isAncestor)):
Originally-landed-as: 283286.251@safari-7620-branch (30ab479e8242).
rdar://141318843
Canonical link: https://commits.webkit.org/288177@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes