]> rtime.felk.cvut.cz Git - frescor/ffmpeg.git/commitdiff
Proper subpacket size check for cook multichannel files.
authorbanan <banan@9553f0bf-9b14-0410-a0b8-cfaf0461ba5b>
Sat, 25 Apr 2009 20:09:34 +0000 (20:09 +0000)
committerbanan <banan@9553f0bf-9b14-0410-a0b8-cfaf0461ba5b>
Sat, 25 Apr 2009 20:09:34 +0000 (20:09 +0000)
git-svn-id: file:///var/local/repositories/ffmpeg/trunk@18693 9553f0bf-9b14-0410-a0b8-cfaf0461ba5b

libavcodec/cook.c

index 923c8e37567fcb86487c07fcf3df11108c7d0235..a33222bf0e7fdc30ed5e791e9717c907722eee26 100644 (file)
@@ -72,7 +72,7 @@ typedef struct {
 
 typedef struct {
     int                 ch_idx;
-    unsigned int        size;
+    int                 size;
     int                 num_channels;
     int                 cookversion;
     int                 samples_per_frame;
@@ -1011,6 +1011,10 @@ static int cook_decode_frame(AVCodecContext *avctx,
     for(i=1;i<q->num_subpackets;i++){
         q->subpacket[i].size = 2 * buf[avctx->block_align - q->num_subpackets + i];
         q->subpacket[0].size -= q->subpacket[i].size + 1;
+        if (q->subpacket[0].size < 0) {
+            av_log(avctx,AV_LOG_DEBUG,"frame subpacket size total > avctx->block_align!\n");
+            return -1;
+        }
     }
 
     /* decode supbackets */