diff --git a/decoder/ixheaacd_defines.h b/decoder/ixheaacd_defines.h index 3ff42dd..d631473 100644 --- a/decoder/ixheaacd_defines.h +++ b/decoder/ixheaacd_defines.h @@ -28,6 +28,7 @@ #define MAX_BINS_LONG 1024 #define MAX_BINS_SHORT 128 #define MAX_SCALE_FACTOR_BANDS_SHORT 16 +#define MAX_SCALE_FACTOR_BANDS_LONG (52) #define ZERO_HCB 0 diff --git a/decoder/ixheaacd_longblock.c b/decoder/ixheaacd_longblock.c index 18a62ec..e5582f7 100644 --- a/decoder/ixheaacd_longblock.c +++ b/decoder/ixheaacd_longblock.c @@ -113,10 +113,11 @@ WORD16 ixheaacd_read_section_data( sect_len_incr = 1; sect_len = (sect_len + sect_len_incr); - top = (sfb + sect_len); if (aac_spect_data_resil_flag) { - if (num_lines_sec_idx >= MAX_SFB_HCR) { + top = (sfb + sect_len); + if ((num_lines_sec_idx >= MAX_SFB_HCR) || + (top >= MAX_SCALE_FACTOR_BANDS_LONG)) { return -1; } ptr_num_sect_lines[num_lines_sec_idx] =