WebPImageDecoder progressive decodes fail to decode valid images
authornoel.gordon@gmail.com <noel.gordon@gmail.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sat, 10 Dec 2011 09:54:37 +0000 (09:54 +0000)
committernoel.gordon@gmail.com <noel.gordon@gmail.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sat, 10 Dec 2011 09:54:37 +0000 (09:54 +0000)
commita901f61e2fae822352e9bf8954df63783c06ccf7
tree813f38309f7228e3024db80bf15c67249af97250
parente8ee9e2519b4ba9e1e7850025f011bd3a4724e5b
WebPImageDecoder progressive decodes fail to decode valid images
https://bugs.webkit.org/show_bug.cgi?id=74062

Reviewed by Adam Barth.

The WEBP header is followed by a so-called P0 header, then some data to
decode.  If a partial P0 header is received during progressive decodes,
WebPIDecGetRGB() returns false; that makes the decoder enter the failed
state, no image appears on the page.

James Zern (webp) recommended the following via e-mail:

WebPIUpdate() validates input data, and will return an error status for
malformed data (bit-stream error, invalid data).  Otherwise, it returns
OK or SUSPENDED.  OK means that decoding is done/complete/no-error, and
SUSPENDED means more input data is needed to complete decoding.  A NULL
return from WebPIDecGetRGB() is valid at this time due to a partial P0,
and should not be interpreted as a decoding failure.

No new tests. Not something DumpRenderTree can easily test.

* platform/image-decoders/webp/WEBPImageDecoder.cpp:
(WebCore::WEBPImageDecoder::decode):  A NULL WebPIDecGetRGB() return is
acceptable here.  Return false instead of failing the decoder.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@102519 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Source/WebCore/ChangeLog
Source/WebCore/platform/image-decoders/webp/WEBPImageDecoder.cpp