]> git.sesse.net Git - ffmpeg/commitdiff
dv: check stype
authorMichael Niedermayer <michaelni@gmx.at>
Tue, 24 Jan 2012 17:48:23 +0000 (18:48 +0100)
committerMichael Niedermayer <michaelni@gmx.at>
Wed, 25 Jan 2012 15:41:26 +0000 (16:41 +0100)
Fixes part1 of CVE-2011-3929
Possibly fixes part of CVE-2011-3936

Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Reviewed-by: Roman Shaposhnik <roman@shaposhnik.org>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
libavformat/dv.c

index d99dee37824be6ea7cad387cdbf7f7b2323b3573..062c56787f298909476a027f7e2c9151822c9d2a 100644 (file)
@@ -207,6 +207,12 @@ static int dv_extract_audio_info(DVDemuxContext* c, uint8_t* frame)
     stype = (as_pack[3] & 0x1f);      /* 0 - 2CH, 2 - 4CH, 3 - 8CH */
     quant =  as_pack[4] & 0x07;       /* 0 - 16bit linear, 1 - 12bit nonlinear */
 
+    if (stype > 3) {
+        av_log(c->fctx, AV_LOG_ERROR, "stype %d is invalid\n", stype);
+        c->ach = 0;
+        return 0;
+    }
+
     /* note: ach counts PAIRS of channels (i.e. stereo channels) */
     ach = ((int[4]){  1,  0,  2,  4})[stype];
     if (ach == 1 && quant && freq == 2)