aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorwm4 <nfxjfg@googlemail.com>2015-01-07 23:57:50 +0100
committerMichael Niedermayer <michaelni@gmx.at>2015-01-08 02:11:24 +0100
commitf04b323a460fd026d1cab31ad82464d34d5d2011 (patch)
tree3af9b671ab5623117e7fe53768aa44b3fad70edd
parente4fddd18e7f4bf666f598a608d63dd16c3da41f4 (diff)
downloadffmpeg-f04b323a460fd026d1cab31ad82464d34d5d2011.tar.gz
avcodec/dvdsubdec: error on bitmaps with size 0
Attemtping to decode them could lead to invalid writes with some fuzzed samples. Signed-off-by: Michael Niedermayer <michaelni@gmx.at> (cherry picked from commit bcaa9099b3648b47060e1724a97dc98b63c83702) Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
-rw-r--r--libavcodec/dvdsubdec.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/libavcodec/dvdsubdec.c b/libavcodec/dvdsubdec.c
index 64f4bffb86..2a9b63a321 100644
--- a/libavcodec/dvdsubdec.c
+++ b/libavcodec/dvdsubdec.c
@@ -106,6 +106,9 @@ static int decode_rle(uint8_t *bitmap, int linesize, int w, int h,
if (start >= buf_size)
return -1;
+ if (w <= 0 || h <= 0)
+ return -1;
+
bit_len = (buf_size - start) * 8;
init_get_bits(&gb, buf + start, bit_len);