From 6b5cb9a69cf65d13c193dbe7b6f10c08e815fd6c Mon Sep 17 00:00:00 2001 From: francescomani Date: Thu, 18 Dec 2025 15:56:20 +0100 Subject: [PATCH] prevent int overflow in qsort for RSRP measurements in case measured SSB RSRP is 0 --- openair1/PHY/NR_UE_ESTIMATION/nr_ue_measurements.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/openair1/PHY/NR_UE_ESTIMATION/nr_ue_measurements.c b/openair1/PHY/NR_UE_ESTIMATION/nr_ue_measurements.c index 4c8c57d9fd..78dae055c5 100644 --- a/openair1/PHY/NR_UE_ESTIMATION/nr_ue_measurements.c +++ b/openair1/PHY/NR_UE_ESTIMATION/nr_ue_measurements.c @@ -210,9 +210,12 @@ void nr_ue_ssb_rsrp_measurements(PHY_VARS_NR_UE *ue, openair0_config_t *cfg0 = &ue->openair0_cfg[0]; - ue->measurements.ssb_rsrp_dBm[ssb_index] = rsrp_db_per_re + 30 - SQ15_SQUARED_NORM_FACTOR_DB - - ((int)cfg0->rx_gain[0] - (int)cfg0->rx_gain_offset[0]) - - dB_fixed(fp->ofdm_symbol_size); + if (rsrp_avg == 0) + ue->measurements.ssb_rsrp_dBm[ssb_index] = -200; // lower than any value to be reported per Table 10.1.6.1-1 of 38.133 + else + ue->measurements.ssb_rsrp_dBm[ssb_index] = rsrp_db_per_re + 30 - SQ15_SQUARED_NORM_FACTOR_DB + - ((int)cfg0->rx_gain[0] - (int)cfg0->rx_gain_offset[0]) + - dB_fixed(fp->ofdm_symbol_size); // to obtain non-integer dB value with a resoluion of 0.5dB uint32_t signal_pwr = rsrp_avg > ue->measurements.n0_power_avg ? rsrp_avg - ue->measurements.n0_power_avg : 0;