dv: Fix null pointer dereference due to ach=0
authorMichael Niedermayer <michaelni@gmx.at>
Tue, 24 Jan 2012 16:51:40 +0000 (17:51 +0100)
committerAlex Converse <alex.converse@gmail.com>
Wed, 1 Feb 2012 02:32:13 +0000 (18:32 -0800)
dv: Fix null pointer dereference due to ach=0

Fixes part2 of CVE-2011-3929

Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Reviewed-by: Roman Shaposhnik <roman@shaposhnik.org>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Signed-off-by: Alex Converse <alex.converse@gmail.com>

libavformat/dv.c

index c90ddec..5e1c798 100644 (file)
@@ -343,7 +343,8 @@ int avpriv_dv_produce_packet(DVDemuxContext *c, AVPacket *pkt,
        c->audio_pkt[i].pts  = c->abytes * 30000*8 / c->ast[i]->codec->bit_rate;
        ppcm[i] = c->audio_buf[i];
     }
-    dv_extract_audio(buf, ppcm, c->sys);
+    if (c->ach)
+        dv_extract_audio(buf, ppcm, c->sys);
 
     /* We work with 720p frames split in half, thus even frames have
      * channels 0,1 and odd 2,3. */