Branch: refs/heads/webkitglib/2.50
Home: https://github.com/WebKit/WebKit
Commit: 540c72ae0b390d4cc400181bd9193f7eb2ae841f
https://github.com/WebKit/WebKit/commit/540c72ae0b390d4cc400181bd9193f7eb2ae841f
Author: Chris Dumez <[email protected]>
Date: 2025-10-17 (Fri, 17 Oct 2025)
Changed paths:
A LayoutTests/fast/files/blob-range-request-expected.txt
A LayoutTests/fast/files/blob-range-request-sync-expected.txt
A LayoutTests/fast/files/blob-range-request-sync.html
A LayoutTests/fast/files/blob-range-request.html
R
LayoutTests/platform/mac-wk1/imported/w3c/web-platform-tests/xhr/blob-range.any-expected.txt
M Source/WebCore/platform/network/BlobResourceHandle.cpp
M Source/WebCore/platform/network/BlobResourceHandle.h
M Source/WebCore/platform/network/HTTPParsers.cpp
M Source/WebCore/platform/network/HTTPParsers.h
M Source/WebKit/NetworkProcess/NetworkDataTaskBlob.cpp
M Source/WebKit/NetworkProcess/NetworkDataTaskBlob.h
Log Message:
-----------
Cherry-pick 301717@main (cc89df4bf098).
https://bugs.webkit.org/show_bug.cgi?id=300867
Potential crash when dealing with out of bounds range requests for Blob URLs
https://bugs.webkit.org/show_bug.cgi?id=300867
rdar://161573171
Reviewed by Darin Adler.
The logic dealing with range requests for blob URLs did not validate
the bounds sufficiently to make sure they are valid for the given blob
size. As a result, we could hit a release assertion inside
`std::span::subspan()`.
After this PR, we properly validate the bounds of the range request. If
they cannot be satisfied, we ignore the range request and we return the
full content, as we are allowed to do. This seems to match Chrome's
behavior also.
Also fix a bug where range requests were not supported with Blob URLs in
WebKitLegacy when using synchronous XMLHttpRequest. This bug was found
during testing.
I also moved some of the code from BlobResourceHandle and
NetworkDataTaskBlob
to a new BlobResourceHandleBase common base class, to promote more code
sharing. I will follow up to move even more code to this base class and
reduce duplication further.
Tests:
fast/files/blob-range-request.html
fast/files/blob-range-request-sync.html
* LayoutTests/fast/files/blob-range-request-expected.txt: Added.
* LayoutTests/fast/files/blob-range-request-sync-expected.txt: Added.
* LayoutTests/fast/files/blob-range-request-sync.html: Added.
* LayoutTests/fast/files/blob-range-request.html: Added.
*
LayoutTests/platform/mac-wk1/imported/w3c/web-platform-tests/xhr/blob-range.any-expected.txt:
Removed.
* Source/WebCore/platform/network/BlobResourceHandle.cpp:
(WebCore::BlobResourceHandleBase::BlobResourceHandleBase):
(WebCore::BlobResourceHandleBase::adjustAndValidateRangeBounds):
(WebCore::BlobResourceHandle::BlobResourceHandle):
(WebCore::BlobResourceHandle::doStart):
(WebCore::BlobResourceHandle::didGetSize):
(WebCore::BlobResourceHandleBase::seek):
(WebCore::BlobResourceHandle::readSync):
(WebCore::BlobResourceHandle::readDataSync):
(WebCore::BlobResourceHandle::readFileSync):
(WebCore::BlobResourceHandle::readDataAsync):
(WebCore::BlobResourceHandle::readFileAsync):
(WebCore::BlobResourceHandle::notifyResponseOnSuccess):
(WebCore::BlobResourceHandle::seek):
* Source/WebCore/platform/network/BlobResourceHandle.h:
Fix the issue for WebKit1.
* Source/WebCore/platform/network/HTTPParsers.cpp:
(WebCore::parseRange):
(WebCore::isCrossOriginSafeRequestHeader):
* Source/WebCore/platform/network/HTTPParsers.h:
Modernize parseRange() to use std::optional instead of integers with
special values when they're missing.
* Source/WebKit/NetworkProcess/NetworkDataTaskBlob.cpp:
(WebKit::NetworkDataTaskBlob::resume):
(WebKit::NetworkDataTaskBlob::didGetSize):
(WebKit::NetworkDataTaskBlob::dispatchDidReceiveResponse):
(WebKit::NetworkDataTaskBlob::readData):
(WebKit::NetworkDataTaskBlob::readFile):
(WebKit::NetworkDataTaskBlob::seek):
* Source/WebKit/NetworkProcess/NetworkDataTaskBlob.h:
Fix the issue for WebKit2.
Canonical link: https://commits.webkit.org/301717@main
Canonical link: https://commits.webkit.org/298234.201@webkitglib/2.50
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