From c22fe2bab6b41dc60ffce028544c2d937e87784a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=BAben=20Soares=20da=20Silva?= Date: Thu, 2 Nov 2023 10:55:50 +0000 Subject: [PATCH] Fix PRACH PDU beamforming allocation to allocate at least 1 member, avoiding creating vector of size 0 --- nfapi/open-nFAPI/nfapi/src/nfapi_p7.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/nfapi/open-nFAPI/nfapi/src/nfapi_p7.c b/nfapi/open-nFAPI/nfapi/src/nfapi_p7.c index 8f7a7c2804..952e9c06f9 100644 --- a/nfapi/open-nFAPI/nfapi/src/nfapi_p7.c +++ b/nfapi/open-nFAPI/nfapi/src/nfapi_p7.c @@ -941,11 +941,13 @@ static uint8_t pack_ul_tti_request_prach_pdu(nfapi_nr_prach_pdu_t *prach_pdu, ui prach_pdu->beamforming.dig_bf_interface = 0; if (prach_pdu->beamforming.prgs_list == NULL) { - prach_pdu->beamforming.prgs_list = calloc(prach_pdu->beamforming.num_prgs, sizeof(*prach_pdu->beamforming.prgs_list)); + prach_pdu->beamforming.prgs_list = calloc(prach_pdu->beamforming.num_prgs == 0 ? 1 : prach_pdu->beamforming.num_prgs, + sizeof(*prach_pdu->beamforming.prgs_list)); } if (prach_pdu->beamforming.prgs_list[0].dig_bf_interface_list == NULL) { prach_pdu->beamforming.prgs_list[0].dig_bf_interface_list = - calloc(prach_pdu->beamforming.dig_bf_interface, sizeof(*prach_pdu->beamforming.prgs_list[0].dig_bf_interface_list)); + calloc(prach_pdu->beamforming.dig_bf_interface == 0 ? 1 : prach_pdu->beamforming.dig_bf_interface, + sizeof(*prach_pdu->beamforming.prgs_list[0].dig_bf_interface_list)); } prach_pdu->beamforming.prgs_list[0].dig_bf_interface_list[0].beam_idx = 0; @@ -4771,11 +4773,13 @@ static uint8_t unpack_ul_tti_request_prach_pdu(void *tlv, uint8_t **ppReadPacked } // TODO: ignoring beamforming tlv for now if (prach_pdu->beamforming.prgs_list == NULL) { - prach_pdu->beamforming.prgs_list = calloc(prach_pdu->beamforming.num_prgs, sizeof(*prach_pdu->beamforming.prgs_list)); + prach_pdu->beamforming.prgs_list = calloc(prach_pdu->beamforming.num_prgs == 0 ? 1 : prach_pdu->beamforming.num_prgs, + sizeof(*prach_pdu->beamforming.prgs_list)); } if (prach_pdu->beamforming.prgs_list[0].dig_bf_interface_list == NULL) { prach_pdu->beamforming.prgs_list[0].dig_bf_interface_list = - calloc(prach_pdu->beamforming.dig_bf_interface, sizeof(*prach_pdu->beamforming.prgs_list[0].dig_bf_interface_list)); + calloc(prach_pdu->beamforming.dig_bf_interface == 0 ? 1 : prach_pdu->beamforming.dig_bf_interface, + sizeof(*prach_pdu->beamforming.prgs_list[0].dig_bf_interface_list)); } // Pack RX Beamforming PDU if (!(pull16(ppReadPackedMsg, &prach_pdu->beamforming.num_prgs, end)