or
2021-10-19 John Cunningham <johncunningham@apple.com>
Avoid null pointer dereference when creating ImageBitmap from a null image.
https://bugs.webkit.org/show_bug.cgi?id=231794
Reviewed by NOBODY (OOPS!).
If the image is null, we can reject the promise earlier. Default to sRGB when a
BitmapImage's nativeImage is null.
Test: fast/canvas/createImageBitmap-invalid-image-blob-crash.html
* html/ImageBitmap.cpp:
(WebCore::ImageBitmap::createFromBuffer):
* platform/graphics/BitmapImage.cpp:
(WebCore::BitmapImage::colorSpace):
2021-10-15 Antti Koivisto <antti@apple.com>
[LFC][Integration] Factor line logical order traversal out of iterator
auto observer = ImageBitmapImageObserver::create(mimeType, expectedContentLength, sourceURL);
auto image = BitmapImage::create(observer.ptr());
auto result = image->setData(sharedBuffer.copyRef(), true);
if (result != EncodedDataStatus::Complete) {
if (result != EncodedDataStatus::Complete || image->isNull()) {
promise.reject(InvalidStateError, "Cannot decode the data in the argument to createImageBitmap");
return;
}
DestinationColorSpace BitmapImage::colorSpace()
{
return nativeImage()->colorSpace();
if (auto nativeImage = this->nativeImage())
return nativeImage->colorSpace();
return DestinationColorSpace::SRGB();
unsigned BitmapImage::decodeCountForTesting() const
* fast/canvas/createImageBitmap-invalid-image-blob-crash-expected.txt: Added.
* fast/canvas/createImageBitmap-invalid-image-blob-crash.html: Added.
2021-10-15 Robert Jenner <Jenner@apple.com>
REBASELINE 2 tables/mozilla tests failing constantly
PASSED (If this page did not crash.)
PASS successfullyParsed is true
TEST COMPLETE
<html>
<head>
<script src="../../resources/js-test-pre.js"></script>
<script>
function runTest() {
// A valid PNG header with no additional data for an image.
let pngHeaderData = new Uint8Array([0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A, 0x00, 0x00]);
let pngHeader = new File([pngHeaderData], '');
createImageBitmap(pngHeader, {resizeWidth: 1, resizeHeight: 1});
</script>
</head>
<body onload="runTest()">
<canvas id="test" width="1000" height="1000"></canvas>
<pre id='console'></pre>
<script src="../../resources/js-test-post.js"></script>
</body>
</html>