ImageDecoder setSize() should check for backing store allocation failure
authornoel.gordon@gmail.com <noel.gordon@gmail.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 5 Dec 2011 07:58:18 +0000 (07:58 +0000)
committernoel.gordon@gmail.com <noel.gordon@gmail.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 5 Dec 2011 07:58:18 +0000 (07:58 +0000)
commite947787a77358fd9a771149e6740c3898f88951a
tree797808ef6291ec112929abd741800fc02d518b63
parent609371b165bc30369c95f54dada9b606b60e2f42
ImageDecoder setSize() should check for backing store allocation failure
https://bugs.webkit.org/show_bug.cgi?id=72864

Reviewed by Adam Barth.

The backing store of a decoded image is a Vector<PixelData> on the affected
ports. And Vector<> provides a resize capacity member that returns false if
memory allocation fails.

setSize() should be called once only during an image decode - add an ASSERT
for that. Resize the backing store capacity to the requested image size and
return false if memory allocation fails.

ImageDecoder::isOverSize(width, height) is called to check that the decoded
width and height won't overflow 'width x height x sizeof(PixelData)' before
calls to setSize(). Refer to http://webkit.org/b/48634

No new tests. Covered by fast/images/size-failure.html

* platform/image-decoders/ImageDecoder.cpp:
(WebCore::ImageFrame::setSize):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@101975 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Source/WebCore/ChangeLog
Source/WebCore/platform/image-decoders/ImageDecoder.cpp