diff options
Diffstat (limited to 'decoder/ixheaacd_ld_mps_config.c')
-rw-r--r-- | decoder/ixheaacd_ld_mps_config.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/decoder/ixheaacd_ld_mps_config.c b/decoder/ixheaacd_ld_mps_config.c index 1da3472..162b876 100644 --- a/decoder/ixheaacd_ld_mps_config.c +++ b/decoder/ixheaacd_ld_mps_config.c @@ -85,6 +85,9 @@ static IA_ERRORCODE ixheaacd_ld_spatial_extension_config( config->bs_residual_sampling_freq_index = ixheaacd_read_bits_buf(it_bit_buff, 4); + if (config->bs_residual_sampling_freq_index > MAX_RES_SAMP_FREQ_IDX) { + return IA_FATAL_ERROR; + } config->bs_residual_frames_per_spatial_frame = ixheaacd_read_bits_buf(it_bit_buff, 2); @@ -97,6 +100,10 @@ static IA_ERRORCODE ixheaacd_ld_spatial_extension_config( if (config->bs_residual_present[j]) { config->bs_residual_bands_ld_mps[j] = ixheaacd_read_bits_buf(it_bit_buff, 5); + if (config->bs_residual_bands_ld_mps[j] > MAX_PARAMETER_BANDS) + { + return IA_FATAL_ERROR; + } } } break; @@ -106,10 +113,17 @@ static IA_ERRORCODE ixheaacd_ld_spatial_extension_config( config->bs_arbitrary_downmix_residual_sampling_freq_index = ixheaacd_read_bits_buf(it_bit_buff, 4); + if (config->bs_arbitrary_downmix_residual_sampling_freq_index > MAX_RES_SAMP_FREQ_IDX) { + return IA_FATAL_ERROR; + } config->bs_arbitrary_downmix_residual_frames_per_spatial_frame = ixheaacd_read_bits_buf(it_bit_buff, 2); config->bs_arbitrary_downmix_residual_bands = ixheaacd_read_bits_buf(it_bit_buff, 5); + if (config->bs_arbitrary_downmix_residual_bands >= + ixheaacd_freq_res_table[config->bs_freq_res]) { + return IA_FATAL_ERROR; + } break; |