# HG changeset patch # User banan # Date 1240690174 0 # Node ID 5c1aeaf1bc12579d1a99ddf0cd73ff49bf6b4f39 # Parent 2bc00c8d13115a6ab14f3dd1ec48bf8006fb4962 Proper subpacket size check for cook multichannel files. diff -r 2bc00c8d1311 -r 5c1aeaf1bc12 cook.c --- a/cook.c Sat Apr 25 19:47:18 2009 +0000 +++ b/cook.c Sat Apr 25 20:09:34 2009 +0000 @@ -72,7 +72,7 @@ typedef struct { int ch_idx; - unsigned int size; + int size; int num_channels; int cookversion; int samples_per_frame; @@ -1011,6 +1011,10 @@ for(i=1;inum_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 */