mirror of
https://github.com/webmproject/libwebp.git
synced 2024-12-27 06:08:21 +01:00
Make sure partition #0 is read before VP8 data in IDecode.
BUG=oss-fuzz:9186,webp:512 Change-Id: Ie0b264b6422774343206ddba3c2820a0cf37ffc0 (cherry picked from commit5f0f5c07c4
) (cherry picked from commit99d0790233
)
This commit is contained in:
parent
2cb7701480
commit
f9298cb8b4
@ -449,7 +449,10 @@ static VP8StatusCode DecodeRemaining(WebPIDecoder* const idec) {
|
|||||||
VP8Decoder* const dec = (VP8Decoder*)idec->dec_;
|
VP8Decoder* const dec = (VP8Decoder*)idec->dec_;
|
||||||
VP8Io* const io = &idec->io_;
|
VP8Io* const io = &idec->io_;
|
||||||
|
|
||||||
assert(dec->ready_);
|
// Make sure partition #0 has been read before, to set dec to ready_.
|
||||||
|
if (!dec->ready_) {
|
||||||
|
return IDecError(idec, VP8_STATUS_BITSTREAM_ERROR);
|
||||||
|
}
|
||||||
for (; dec->mb_y_ < dec->mb_h_; ++dec->mb_y_) {
|
for (; dec->mb_y_ < dec->mb_h_; ++dec->mb_y_) {
|
||||||
if (idec->last_mb_y_ != dec->mb_y_) {
|
if (idec->last_mb_y_ != dec->mb_y_) {
|
||||||
if (!VP8ParseIntraModeRow(&dec->br_, dec)) {
|
if (!VP8ParseIntraModeRow(&dec->br_, dec)) {
|
||||||
@ -570,6 +573,10 @@ static VP8StatusCode IDecode(WebPIDecoder* idec) {
|
|||||||
status = DecodePartition0(idec);
|
status = DecodePartition0(idec);
|
||||||
}
|
}
|
||||||
if (idec->state_ == STATE_VP8_DATA) {
|
if (idec->state_ == STATE_VP8_DATA) {
|
||||||
|
const VP8Decoder* const dec = (VP8Decoder*)idec->dec_;
|
||||||
|
if (dec == NULL) {
|
||||||
|
return VP8_STATUS_SUSPENDED; // can't continue if we have no decoder.
|
||||||
|
}
|
||||||
status = DecodeRemaining(idec);
|
status = DecodeRemaining(idec);
|
||||||
}
|
}
|
||||||
if (idec->state_ == STATE_VP8L_HEADER) {
|
if (idec->state_ == STATE_VP8L_HEADER) {
|
||||||
|
Loading…
Reference in New Issue
Block a user