# HG changeset patch # User michael # Date 1260146138 0 # Node ID 2dbb341a14bafbc5fad43f938b89e571afc555ae # Parent 50c21a46538f4839d435f6002b8315284cd413e5 Print error messages on errors. diff -r 50c21a46538f -r 2dbb341a14ba wmadec.c --- a/wmadec.c Sun Dec 06 23:51:51 2009 +0000 +++ b/wmadec.c Mon Dec 07 00:35:38 2009 +0000 @@ -355,8 +355,10 @@ while (q < q_end) { code = get_vlc2(&s->gb, s->exp_vlc.table, EXPVLCBITS, EXPMAX); - if (code < 0) + if (code < 0){ + av_log(s->avctx, AV_LOG_ERROR, "Exponent vlc invalid\n"); return -1; + } /* NOTE: this offset is the same as MPEG4 AAC ! */ last_exp += code - 60; if ((unsigned)last_exp + 60 > FF_ARRAY_ELEMS(pow_tab)) { @@ -457,12 +459,16 @@ if (s->reset_block_lengths) { s->reset_block_lengths = 0; v = get_bits(&s->gb, n); - if (v >= s->nb_block_sizes) + if (v >= s->nb_block_sizes){ + av_log(s->avctx, AV_LOG_ERROR, "prev_block_len_bits %d out of range\n", s->frame_len_bits - v); return -1; + } s->prev_block_len_bits = s->frame_len_bits - v; v = get_bits(&s->gb, n); - if (v >= s->nb_block_sizes) + if (v >= s->nb_block_sizes){ + av_log(s->avctx, AV_LOG_ERROR, "block_len_bits %d out of range\n", s->frame_len_bits - v); return -1; + } s->block_len_bits = s->frame_len_bits - v; } else { /* update block lengths */ @@ -470,8 +476,10 @@ s->block_len_bits = s->next_block_len_bits; } v = get_bits(&s->gb, n); - if (v >= s->nb_block_sizes) + if (v >= s->nb_block_sizes){ + av_log(s->avctx, AV_LOG_ERROR, "next_block_len_bits %d out of range\n", s->frame_len_bits - v); return -1; + } s->next_block_len_bits = s->frame_len_bits - v; } else { /* fixed block len */ @@ -482,8 +490,10 @@ /* now check if the block length is coherent with the frame length */ s->block_len = 1 << s->block_len_bits; - if ((s->block_pos + s->block_len) > s->frame_len) + if ((s->block_pos + s->block_len) > s->frame_len){ + av_log(s->avctx, AV_LOG_ERROR, "frame_len overflow\n"); return -1; + } if (s->nb_channels == 2) { s->ms_stereo = get_bits1(&s->gb); @@ -547,8 +557,10 @@ val = get_bits(&s->gb, 7) - 19; } else { code = get_vlc2(&s->gb, s->hgain_vlc.table, HGAINVLCBITS, HGAINMAX); - if (code < 0) + if (code < 0){ + av_log(s->avctx, AV_LOG_ERROR, "hgain vlc invalid\n"); return -1; + } val += code - 18; } s->high_band_values[ch][i] = val; @@ -882,6 +894,7 @@ pos >>= 3; len = buf_size - pos; if (len > MAX_CODED_SUPERFRAME_SIZE || len < 0) { + av_log(s->avctx, AV_LOG_ERROR, "len %d invalid\n", len); goto fail; } s->last_superframe_len = len;