From 321c4751768522edc9c868c609c0ab351f07d2ff Mon Sep 17 00:00:00 2001 From: Robert Schmidt Date: Sun, 2 Jun 2024 11:28:39 +0200 Subject: [PATCH] Fix integer overflow avoid UBsan error: openair1/PHY/NR_TRANSPORT/nr_ulsch_demodulation.c:459:77: runtime error: signed integer overflo w: 2009540296 + 668087372 cannot be represented in type 'int' --- openair1/PHY/NR_TRANSPORT/nr_ulsch_demodulation.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/openair1/PHY/NR_TRANSPORT/nr_ulsch_demodulation.c b/openair1/PHY/NR_TRANSPORT/nr_ulsch_demodulation.c index 723d13f65e..96266e279a 100644 --- a/openair1/PHY/NR_TRANSPORT/nr_ulsch_demodulation.c +++ b/openair1/PHY/NR_TRANSPORT/nr_ulsch_demodulation.c @@ -454,10 +454,9 @@ static void nr_ulsch_channel_level(int **ul_ch_estimates_ext, avg128U = simde_mm_add_epi32(avg128U, simde_mm_srai_epi32(simde_mm_madd_epi16(ul_ch128[i], ul_ch128[i]), x)); } - avg[aatx*frame_parms->nb_antennas_rx+aarx] = (((int32_t*)&avg128U)[0] + - ((int32_t*)&avg128U)[1] + - ((int32_t*)&avg128U)[2] + - ((int32_t*)&avg128U)[3]) / y; + int32_t *avg32i = (int32_t *)&avg128U; + int64_t avg64 = (int64_t)avg32i[0] + avg32i[1] + avg32i[2] + avg32i[3]; + avg[aatx * frame_parms->nb_antennas_rx + aarx] = avg64 / y; } }