comparison cook.c @ 9565:5c1aeaf1bc12 libavcodec

Proper subpacket size check for cook multichannel files.
author banan
date Sat, 25 Apr 2009 20:09:34 +0000
parents 2bc00c8d1311
children 62d00a9c3824
comparison
equal deleted inserted replaced
9564:2bc00c8d1311 9565:5c1aeaf1bc12
70 int *previous; 70 int *previous;
71 } cook_gains; 71 } cook_gains;
72 72
73 typedef struct { 73 typedef struct {
74 int ch_idx; 74 int ch_idx;
75 unsigned int size; 75 int size;
76 int num_channels; 76 int num_channels;
77 int cookversion; 77 int cookversion;
78 int samples_per_frame; 78 int samples_per_frame;
79 int subbands; 79 int subbands;
80 int js_subband_start; 80 int js_subband_start;
1009 q->subpacket[0].size = avctx->block_align; 1009 q->subpacket[0].size = avctx->block_align;
1010 1010
1011 for(i=1;i<q->num_subpackets;i++){ 1011 for(i=1;i<q->num_subpackets;i++){
1012 q->subpacket[i].size = 2 * buf[avctx->block_align - q->num_subpackets + i]; 1012 q->subpacket[i].size = 2 * buf[avctx->block_align - q->num_subpackets + i];
1013 q->subpacket[0].size -= q->subpacket[i].size + 1; 1013 q->subpacket[0].size -= q->subpacket[i].size + 1;
1014 if (q->subpacket[0].size < 0) {
1015 av_log(avctx,AV_LOG_DEBUG,"frame subpacket size total > avctx->block_align!\n");
1016 return -1;
1017 }
1014 } 1018 }
1015 1019
1016 /* decode supbackets */ 1020 /* decode supbackets */
1017 *data_size = 0; 1021 *data_size = 0;
1018 for(i=0;i<q->num_subpackets;i++){ 1022 for(i=0;i<q->num_subpackets;i++){