diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2014-12-16 16:24:55 +0100 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2015-01-20 03:27:17 +0100 |
commit | 7279be7c75c38547994466b6f95bc3cadb05238b (patch) | |
tree | 33c295d60a2e78812505d69b4741cd73e801a54f | |
parent | f5fd937fc5dfb1be11d467742c77246d5188e2ea (diff) | |
download | ffmpeg-7279be7c75c38547994466b6f95bc3cadb05238b.tar.gz |
avcodec/vmdvideo: Check len before using it in method 3
Fixes out of array access
Fixes: asan_heap-oob_4d23ba_91_cov_3853393937_128.vmd
Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 3030fb7e0d41836f8add6399e9a7c7b740b48bfd)
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
-rw-r--r-- | libavcodec/vmdav.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/libavcodec/vmdav.c b/libavcodec/vmdav.c index c1fb80b97d..91d245a2a9 100644 --- a/libavcodec/vmdav.c +++ b/libavcodec/vmdav.c @@ -352,6 +352,9 @@ static int vmd_decode(VmdVideoContext *s, AVFrame *frame) ofs += slen; bytestream2_skip(&gb, len); } else { + if (ofs + len > frame_width || + bytestream2_get_bytes_left(&gb) < len) + return AVERROR_INVALIDDATA; bytestream2_get_buffer(&gb, &dp[ofs], len); ofs += len; } |