Fix for divide-by-zero in ixheaacd_sbr_env_calc
These changes handle the divide-by-zero runtime error reported while calculating energy tone. Bug: ossFuzz:63248 Test: poc in bug
This commit is contained in:
parent
2fb847d5e3
commit
b1a200212e
1 changed files with 9 additions and 7 deletions
|
|
@ -365,12 +365,13 @@ WORD32 ixheaacd_sbr_env_calc(ia_sbr_frame_info_data_struct *frame_data, FLOAT32
|
|||
(frame_data->qmapped_pvc[c][t] + guard))
|
||||
: nrg_tone_pvc[c][t]);
|
||||
|
||||
nrg_tone_pvc[c][t] = (FLOAT32)(
|
||||
((*harm_flag_varlen)[c] &&
|
||||
(t >= frame_data->sin_start_for_cur_top ||
|
||||
(*harm_flag_varlen_prev)[c + sub_band_start]))
|
||||
? sqrt(nrg_ref_pvc[c][t] * tmp / prev_env_noise_level[o])
|
||||
: nrg_tone_pvc[c][t]);
|
||||
nrg_tone_pvc[c][t] =
|
||||
(FLOAT32)(((*harm_flag_varlen)[c] &&
|
||||
(t >= frame_data->sin_start_for_cur_top ||
|
||||
(*harm_flag_varlen_prev)[c + sub_band_start]))
|
||||
? sqrt(nrg_ref_pvc[c][t] * tmp /
|
||||
(prev_env_noise_level[o] + guard))
|
||||
: nrg_tone_pvc[c][t]);
|
||||
|
||||
} else {
|
||||
if (noise_absc_flag) {
|
||||
|
|
@ -522,7 +523,8 @@ WORD32 ixheaacd_sbr_env_calc(ia_sbr_frame_info_data_struct *frame_data, FLOAT32
|
|||
k < (*lim_table)[limiter_band][c + 1]; k++) {
|
||||
if (g_max <= nrg_gain_pvc[k][t]) {
|
||||
noise_level_pvc[k][t] =
|
||||
noise_level_pvc[k][t] * (g_max / nrg_gain_pvc[k][t]);
|
||||
(FLOAT32)(noise_level_pvc[k][t] *
|
||||
(g_max / (nrg_gain_pvc[k][t] + guard)));
|
||||
nrg_gain_pvc[k][t] = g_max;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue