1
0
mirror of https://github.com/FFmpeg/FFmpeg.git synced 2024-12-23 12:43:46 +02:00

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>
This commit is contained in:
Pascal Massimino 2019-08-28 09:41:42 +02:00 committed by Michael Niedermayer
parent 3740bdee77
commit 857fd2ad99

View File

@ -1412,8 +1412,11 @@ static int webp_decode_frame(AVCodecContext *avctx, void *data, int *got_frame,
return AVERROR_INVALIDDATA; return AVERROR_INVALIDDATA;
chunk_size += chunk_size & 1; chunk_size += chunk_size & 1;
if (bytestream2_get_bytes_left(&gb) < chunk_size) if (bytestream2_get_bytes_left(&gb) < chunk_size) {
return AVERROR_INVALIDDATA; /* 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) { switch (chunk_type) {
case MKTAG('V', 'P', '8', ' '): case MKTAG('V', 'P', '8', ' '):