Mercurial > libavcodec.hg
changeset 4202:af24e0fd0d1b libavcodec
more checks and error messages
author | michael |
---|---|
date | Tue, 14 Nov 2006 20:35:15 +0000 |
parents | c4f87cfd5b20 |
children | 14250f6ff483 |
files | mpegaudiodec.c |
diffstat | 1 files changed, 8 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- 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);