[FFmpeg-cvslog] avcodec/webp: fix decoding for trailing junk
Pascal Massimino
git at videolan.org
Tue Sep 10 18:23:18 EEST 2019
ffmpeg | branch: master | Pascal Massimino <pascal.massimino at gmail.com> | Wed Aug 28 09:41:42 2019 +0200| [857fd2ad99032e3ff51363975997d0caf0e72e7b] | committer: Michael Niedermayer
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 at niedermayer.cc>
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=857fd2ad99032e3ff51363975997d0caf0e72e7b
---
libavcodec/webp.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/libavcodec/webp.c b/libavcodec/webp.c
index 077bb06f85..c6d0206846 100644
--- a/libavcodec/webp.c
+++ b/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', ' '):
More information about the ffmpeg-cvslog
mailing list