comparison aacsbr.c @ 11450:95123a24a580 libavcodec

aacsbr: Check that bs_num_env is valid before writing arrays with it as an offset.
author alexc
date Tue, 09 Mar 2010 21:50:10 +0000
parents e62f45fd47d4
children 96dde15b2e0d
comparison
equal deleted inserted replaced
11449:e62f45fd47d4 11450:95123a24a580
687 ch_data->t_env[0] = get_bits(gb, 2); 687 ch_data->t_env[0] = get_bits(gb, 2);
688 abs_bord_trail += get_bits(gb, 2); 688 abs_bord_trail += get_bits(gb, 2);
689 num_rel_lead = get_bits(gb, 2); 689 num_rel_lead = get_bits(gb, 2);
690 num_rel_trail = get_bits(gb, 2); 690 num_rel_trail = get_bits(gb, 2);
691 ch_data->bs_num_env = num_rel_lead + num_rel_trail + 1; 691 ch_data->bs_num_env = num_rel_lead + num_rel_trail + 1;
692 ch_data->t_env[ch_data->bs_num_env] = abs_bord_trail;
693 692
694 if (ch_data->bs_num_env > 5) { 693 if (ch_data->bs_num_env > 5) {
695 av_log(ac->avccontext, AV_LOG_ERROR, 694 av_log(ac->avccontext, AV_LOG_ERROR,
696 "Invalid bitstream, too many SBR envelopes in VARVAR type SBR frame: %d\n", 695 "Invalid bitstream, too many SBR envelopes in VARVAR type SBR frame: %d\n",
697 ch_data->bs_num_env); 696 ch_data->bs_num_env);
698 return -1; 697 return -1;
699 } 698 }
699
700 ch_data->t_env[ch_data->bs_num_env] = abs_bord_trail;
700 701
701 for (i = 0; i < num_rel_lead; i++) 702 for (i = 0; i < num_rel_lead; i++)
702 ch_data->t_env[i + 1] = ch_data->t_env[i] + 2 * get_bits(gb, 2) + 2; 703 ch_data->t_env[i + 1] = ch_data->t_env[i] + 2 * get_bits(gb, 2) + 2;
703 for (i = 0; i < num_rel_trail; i++) 704 for (i = 0; i < num_rel_trail; i++)
704 ch_data->t_env[ch_data->bs_num_env - 1 - i] = 705 ch_data->t_env[ch_data->bs_num_env - 1 - i] =