# HG changeset patch # User michael # Date 1163536515 0 # Node ID af24e0fd0d1ba47370d9fca6cc11242fb4cf2bcc # Parent c4f87cfd5b20bfc2d96ae20f6686dab1c4b26cb7 more checks and error messages diff -r c4f87cfd5b20 -r af24e0fd0d1b mpegaudiodec.c --- a/mpegaudiodec.c Tue Nov 14 19:53:22 2006 +0000 +++ b/mpegaudiodec.c Tue Nov 14 20:35:15 2006 +0000 @@ -2166,6 +2166,11 @@ g = &granules[ch][gr]; g->part2_3_length = get_bits(&s->gb, 12); g->big_values = get_bits(&s->gb, 9); + if(g->big_values > 288){ + av_log(NULL, AV_LOG_ERROR, "big_values too big\n"); + return -1; + } + g->global_gain = get_bits(&s->gb, 8); /* if MS stereo only is selected, we precompute the 1/sqrt(2) renormalization factor */ @@ -2179,8 +2184,10 @@ blocksplit_flag = get_bits(&s->gb, 1); if (blocksplit_flag) { g->block_type = get_bits(&s->gb, 2); - if (g->block_type == 0) + if (g->block_type == 0){ + av_log(NULL, AV_LOG_ERROR, "invalid block type\n"); return -1; + } g->switch_point = get_bits(&s->gb, 1); for(i=0;i<2;i++) g->table_select[i] = get_bits(&s->gb, 5);