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:
parent
3740bdee77
commit
857fd2ad99
@ -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', ' '):
|
||||||
|
Loading…
Reference in New Issue
Block a user