avcodec/webp: fix decoding for trailing junk

some bitstream have trailing junk, despite being valid webp data.
In case of apparent error, abort the loop and let *got_frame
decide whether this is an error or not.

fixes trac #8107 (/#7612)

Another possibility would be turning the loop into:
    while (!*got_frame) {...}

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
pull/322/head
Pascal Massimino 5 years ago committed by Michael Niedermayer
parent 3740bdee77
commit 857fd2ad99
  1. 7
      libavcodec/webp.c

@ -1412,8 +1412,11 @@ static int webp_decode_frame(AVCodecContext *avctx, void *data, int *got_frame,
return AVERROR_INVALIDDATA;
chunk_size += chunk_size & 1;
if (bytestream2_get_bytes_left(&gb) < chunk_size)
return AVERROR_INVALIDDATA;
if (bytestream2_get_bytes_left(&gb) < chunk_size) {
/* we seem to be running out of data, but it could also be that the
bitstream has trailing junk leading to bogus chunk_size. */
break;
}
switch (chunk_type) {
case MKTAG('V', 'P', '8', ' '):

Loading…
Cancel
Save