Branch: refs/heads/webkitglib/2.54
Home: https://github.com/WebKit/WebKit
Commit: e4191f226738cded013826d68b48e9bf89ec7814
https://github.com/WebKit/WebKit/commit/e4191f226738cded013826d68b48e9bf89ec7814
Author: Justin Michaud <[email protected]>
Date: 2026-08-31 (Mon, 31 Aug 2026)
Changed paths:
M LayoutTests/fast/images/animated-image-mp4-crash.html
A LayoutTests/fast/images/apng-acTL-frame-count-overflow-expected.txt
A LayoutTests/fast/images/apng-acTL-frame-count-overflow.html
A LayoutTests/fast/images/apng-acTL-zero-frame-count-expected.txt
A LayoutTests/fast/images/apng-acTL-zero-frame-count.html
A
LayoutTests/fast/images/apng-decode-after-frame-cache-eviction-expected.txt
A LayoutTests/fast/images/apng-decode-after-frame-cache-eviction.html
A LayoutTests/fast/images/resources/apng-acTL-frame-count-overflow.png
A
LayoutTests/fast/images/resources/apng-acTL-zero-frame-count.png
A
LayoutTests/fast/images/resources/apng-frame-cache-eviction.png
A
LayoutTests/http/tests/images/ico-png-subimage-partial-load-crash-expected.txt
A LayoutTests/http/tests/images/ico-png-subimage-partial-load-crash.html
A LayoutTests/http/tests/images/resources/ico-png-subimage.ico
M LayoutTests/platform/ios/TestExpectations
M LayoutTests/platform/mac/TestExpectations
M Source/WebCore/platform/graphics/ImageBackingStore.h
M Source/WebCore/platform/image-decoders/gif/GIFImageDecoder.cpp
M Source/WebCore/platform/image-decoders/ico/ICOImageDecoder.cpp
M Source/WebCore/platform/image-decoders/jpegxl/JPEGXLImageDecoder.cpp
M Source/WebCore/platform/image-decoders/png/PNGImageDecoder.cpp
M Source/WebCore/platform/image-decoders/webp/WEBPImageDecoder.cpp
M Source/WebCore/testing/Internals.cpp
M Source/WebCore/testing/Internals.h
M
Source/WebCore/testing/Internals.idl
M Tools/TestWebKitAPI/PlatformGTK.cmake
M
Tools/TestWebKitAPI/PlatformWPE.cmake
A Tools/TestWebKitAPI/Tests/WebCore/ImageDecoderTests.cpp
Log Message:
-----------
Cherry-pick 320102@main (24545f4fcbd7).
https://bugs.webkit.org/show_bug.cgi?id=321756
[non-cocoa][fuzz] Frame cache evicted or unparsed frames dereferenced
https://bugs.webkit.org/show_bug.cgi?id=321756
Reviewed by Claudio Saavedra.
Add some helpers to test the various image decoders.
Fix:
- PNGImageDecoder::readChunks() stored the acTL frame count before
validating
it, so a malformed APNG could advertise up to 2^32 - 1 frames through
frameCount() while the frame buffer cache held a single entry.
- PNGImageDecoder::initFrameBuffer() and frameComplete(), and the same
compositing logic in GIFImageDecoder::frameComplete(), read the previous
frame's backing store; a frame evicted from the frame
cache has none, so
null-check it first.
-
JPEGXLImageDecoder::clearDecodedPixelDataIfNeeded() built an end iterator
from clearBeforeFrame without clamping it to the cache size.
- WEBPImageDecoder::frameBufferAtIndex() blindly indexed the cache after
decode(), but decode() leaves the cache untouched when it bails out early.
- ICOImageDecoder::decodeAtIndex() dereferenced the embedded PNG
sub-decoder's
firstFrameBuffer(), which can be null
* LayoutTests/fast/images/animated-image-mp4-crash.html:
* LayoutTests/fast/images/apng-acTL-frame-count-overflow-expected.txt:
Added.
* LayoutTests/fast/images/apng-acTL-frame-count-overflow.html: Added.
* LayoutTests/fast/images/apng-acTL-zero-frame-count-expected.txt: Added.
* LayoutTests/fast/images/apng-acTL-zero-frame-count.html: Added.
*
LayoutTests/fast/images/apng-decode-after-frame-cache-eviction-expected.txt:
Added.
*
LayoutTests/fast/images/apng-decode-after-frame-cache-eviction.html: Added.
*
LayoutTests/fast/images/resources/apng-acTL-frame-count-overflow.png: Added.
* LayoutTests/fast/images/resources/apng-acTL-zero-frame-count.png: Added.
* LayoutTests/fast/images/resources/apng-frame-cache-eviction.png: Added.
*
LayoutTests/http/tests/images/ico-png-subimage-partial-load-crash-expected.txt:
Added.
* LayoutTests/http/tests/images/ico-png-subimage-partial-load-crash.html:
Added.
* LayoutTests/http/tests/images/resources/ico-png-subimage.ico: Added.
* Source/WebCore/platform/image-decoders/gif/GIFImageDecoder.cpp:
(WebCore::GIFImageDecoder::frameComplete):
* Source/WebCore/platform/image-decoders/ico/ICOImageDecoder.cpp:
(WebCore::ICOImageDecoder::decodeAtIndex):
* Source/WebCore/platform/image-decoders/jpegxl/JPEGXLImageDecoder.cpp:
(WebCore::JPEGXLImageDecoder::clearDecodedPixelDataIfNeeded):
*
Source/WebCore/platform/image-decoders/png/PNGImageDecoder.cpp:
(WebCore::PNGImageDecoder::frameBufferAtIndex):
(WebCore::PNGImageDecoder::readChunks):
(WebCore::PNGImageDecoder::initFrameBuffer):
(WebCore::PNGImageDecoder::frameComplete):
* Source/WebCore/platform/image-decoders/webp/WEBPImageDecoder.cpp:
(WebCore::WEBPImageDecoder::frameBufferAtIndex):
* Source/WebCore/testing/Internals.cpp:
(WebCore::Internals::forceDecodeImageFrameAtIndex):
* Source/WebCore/testing/Internals.h:
* Source/WebCore/testing/Internals.idl:
* Tools/TestWebKitAPI/PlatformGTK.cmake:
* Tools/TestWebKitAPI/PlatformWPE.cmake:
* Tools/TestWebKitAPI/Tests/WebCore/ImageDecoderTests.cpp: Added.
(TestWebKitAPI::append32):
(TestWebKitAPI::crc32For):
(TestWebKitAPI::appendChunk):
(TestWebKitAPI::redScanlines):
(TestWebKitAPI::storedZlibStream):
(TestWebKitAPI::makeAnimatedPNG):
(TestWebKitAPI::makeTwoFrameAPNG):
(TestWebKitAPI::createDecoder):
(TestWebKitAPI::TEST(ImageDecoder,
APNGRejectedFrameCountIsNotReported)):
(TestWebKitAPI::TEST(ImageDecoder, APNGZeroFrameCountStillDecodesDefaultImage)):
(TestWebKitAPI::TEST(ImageDecoder, APNGValidFrameCountIsReported)):
(TestWebKitAPI::TEST(ImageDecoder, ClearFrameBufferCacheThenDecodeAgain)):
(TestWebKitAPI::TEST(ImageDecoder, FrameIndexPastEndIsHandled)):
(TestWebKitAPI::TEST(ImageDecoder, PartialDataThenFullData)):
(TestWebKitAPI::makeICOWithPNGSubImage):
(TestWebKitAPI::TEST(ImageDecoder, ICOWithPartiallyReceivedPNGSubImage)):
* LayoutTests/platform/ios/TestExpectations:
* LayoutTests/platform/mac/TestExpectations:
Canonical link: https://commits.webkit.org/320102@main
Canonical link:
https://flagged.apple.com:443/proxy?t2=Dr4Z8y2CJ8&o=aHR0cHM6Ly9jb21taXRzLndlYmtpdC5vcmcvMzE3Njk1LjE2NkB3ZWJraXRnbGliLzIuNTQ=&emid=2090655d-8ba9-4ef5-a013-73374da7b77d&c=11
Commit:
678106fbbb24ede93a04fbdd3d2acb1ddad786b8
https://github.com/WebKit/WebKit/commit/678106fbbb24ede93a04fbdd3d2acb1ddad786b8
Author: Justin Michaud <[email protected]>
Date: 2026-08-31 (Mon, 31 Aug 2026)
Changed paths:
A
LayoutTests/fast/images/apng-icc-frame-right-half-expected.html
A LayoutTests/fast/images/apng-icc-frame-right-half.html
A LayoutTests/fast/images/resources/apng-icc-frame-right-half-reference.png
A LayoutTests/fast/images/resources/apng-icc-frame-right-half.png
Log Message:
-----------
Cherry-pick 320038@main (2668e2d7adfe).
https://bugs.webkit.org/show_bug.cgi?id=321751
[non-cocoa][fuzz] OOB write in APNG ICC conversion
https://bugs.webkit.org/show_bug.cgi?id=321751
Reviewed by Adrian Perez de Castro.
The reporter fixed this upstream, just add a test.
Canonical
link:
https://flagged.apple.com:443/proxy?t2=DZ0c3h0vS2&o=aHR0cHM6Ly9jb21taXRzLndlYmtpdC5vcmcvMzIwMDM4QG1haW4=&emid=2090655d-8ba9-4ef5-a013-73374da7b77d&c=11
Canonical
link:
https://flagged.apple.com:443/proxy?t2=DG1y2b5rV0&o=aHR0cHM6Ly9jb21taXRzLndlYmtpdC5vcmcvMzE3Njk1LjE2N0B3ZWJraXRnbGliLzIuNTQ=&emid=2090655d-8ba9-4ef5-a013-73374da7b77d&c=11
Commit: 2cb2a0dc47b496abadd9de8c826e7167a6a7d3f3
https://github.com/WebKit/WebKit/commit/2cb2a0dc47b496abadd9de8c826e7167a6a7d3f3
Author:
Mike Gorse <[email protected]>
Date: 2026-08-31 (Mon, 31 Aug 2026)
Changed paths:
M Source/WebKit/SourcesGTK.txt
M Source/WebKit/SourcesWPE.txt
M
Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/NonCompositedFrameRenderer.cpp
Log Message:
-----------
Cherry-pick 319999@main (c2d659a809a2).
https://bugs.webkit.org/show_bug.cgi?id=322108
Build failure: Xlib defines causing conflicts
https://bugs.webkit.org/show_bug.cgi?id=322108
Reviewed by
Adrian Perez de Castro.
Epoxy.h can pull in xlib.h, which pollutes the namespace and causes problems
later with unified sources.
* Source/WebKit/SourcesGTK.txt:
* Source/WebKit/SourcesWPE.txt:
*
Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/NonCompositedFrameRenderer.cpp:
(WebKit::NonCompositedFrameRenderer::foreachRegionInDamageHistoryForTesting
const):
Canonical link: https://commits.webkit.org/319999@main
Canonical link:
https://flagged.apple.com:443/proxy?t2=Dq0v2a1IF0&o=aHR0cHM6Ly9jb21taXRzLndlYmtpdC5vcmcvMzE3Njk1LjE2OEB3ZWJraXRnbGliLzIuNTQ=&emid=2090655d-8ba9-4ef5-a013-73374da7b77d&c=11
Commit: 3d809b0eb8e1d384c9a8ab20bf4140e9a261e82e
https://github.com/WebKit/WebKit/commit/3d809b0eb8e1d384c9a8ab20bf4140e9a261e82e
Author: Carlos Garcia Campos <[email protected]>
Date: 2026-08-31 (Mon, 31 Aug 2026)
Changed paths:
M Source/WebCore/platform/graphics/skia/SkiaSerializedImageBuffer.cpp
M Source/WebCore/platform/graphics/skia/SkiaSerializedImageBuffer.h
Log Message:
-----------
Cherry-pick 319660@main
(1feb6ac19b06).
https://bugs.webkit.org/show_bug.cgi?id=322349
[Skia] Do not transfer accelerated ImageBuffer to a different thread
https://bugs.webkit.org/show_bug.cgi?id=322349
Reviewed by Nikolas Zimmermann.
The
SkSurface created by an accelerated ImageBuffer is expected to be
released in the same thread it was created so that GL resources are
freed by the right GrContext. For accelerated ImageBuffer we take an
image snapshot and save all
ImageBuffer parameters required to create
a new one in the destination thread to copy the image snapshot into.
* Source/WebCore/platform/graphics/skia/SkiaSerializedImageBuffer.cpp:
(WebCore::SkiaSerializedImageBuffer::SkiaSerializedImageBuffer):
(WebCore::SkiaSerializedImageBuffer::sinkIntoImageBuffer):
(WebCore::SkiaSerializedImageBuffer::memoryCost
const):
* Source/WebCore/platform/graphics/skia/SkiaSerializedImageBuffer.h:
Canonical
link:
https://flagged.apple.com:443/proxy?t2=dv3v2w9oW9&o=aHR0cHM6Ly9jb21taXRzLndlYmtpdC5vcmcvMzE5NjYwQG1haW4=&emid=2090655d-8ba9-4ef5-a013-73374da7b77d&c=11
Canonical link:
https://flagged.apple.com:443/proxy?t2=Dq4m3J9Vl8&o=aHR0cHM6Ly9jb21taXRzLndlYmtpdC5vcmcvMzE3Njk1LjE2OUB3ZWJraXRnbGliLzIuNTQ=&emid=2090655d-8ba9-4ef5-a013-73374da7b77d&c=11
Compare: https://github.com/WebKit/WebKit/compare/23b4c9a60608...3d809b0eb8e1
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications