OSDN Git Service

mkvdec: Avoid divide-by-zero crash on invalid real audio tracks
authorDavid Conrad <lessen42@gmail.com>
Mon, 11 Jan 2010 00:31:55 +0000 (00:31 +0000)
committerDavid Conrad <lessen42@gmail.com>
Mon, 11 Jan 2010 00:31:55 +0000 (00:31 +0000)
Originally committed as revision 21129 to svn://svn.ffmpeg.org/ffmpeg/trunk

libavformat/matroskadec.c

index 688169a..59dc166 100644 (file)
@@ -1634,9 +1634,10 @@ static int matroska_parse_block(MatroskaDemuxContext *matroska, uint8_t *data,
 
     if (res == 0) {
         for (n = 0; n < laces; n++) {
-            if (st->codec->codec_id == CODEC_ID_RA_288 ||
-                st->codec->codec_id == CODEC_ID_COOK ||
-                st->codec->codec_id == CODEC_ID_ATRAC3) {
+            if ((st->codec->codec_id == CODEC_ID_RA_288 ||
+                 st->codec->codec_id == CODEC_ID_COOK ||
+                 st->codec->codec_id == CODEC_ID_ATRAC3) &&
+                 st->codec->block_align && track->audio.sub_packet_size) {
                 int a = st->codec->block_align;
                 int sps = track->audio.sub_packet_size;
                 int cfs = track->audio.coded_framesize;