diff --git a/nfapi/oai_integration/nfapi_vnf.c b/nfapi/oai_integration/nfapi_vnf.c index f45a4878be84c360d3510594353038df93158e05..c5d305e4ea12704c8376215c845408dfda38076f 100644 --- a/nfapi/oai_integration/nfapi_vnf.c +++ b/nfapi/oai_integration/nfapi_vnf.c @@ -1253,7 +1253,7 @@ int oai_nfapi_hi_dci0_req(nfapi_hi_dci0_request_t *hi_dci0_req) { return retval; } -static bool remove_ul_config_req_pdu(uint16_t index, nfapi_ul_config_request_t *ul_config_req) +static bool remove_ul_config_req_pdu(int index, nfapi_ul_config_request_t *ul_config_req) { uint8_t num_pdus = ul_config_req->ul_config_request_body.number_of_pdus; nfapi_ul_config_request_pdu_t *pdu_list = ul_config_req->ul_config_request_body.ul_config_pdu_list; @@ -1262,7 +1262,14 @@ static bool remove_ul_config_req_pdu(uint16_t index, nfapi_ul_config_request_t * { return false; } + // last element of the list + if (index == num_pdus) + { + ul_config_req->ul_config_request_body.number_of_pdus--; + return true; + } + // All other element locations for(int i = index; i < num_pdus; i++) { pdu_list[i] = pdu_list[i + 1]; @@ -1285,7 +1292,7 @@ int oai_nfapi_ul_config_req(nfapi_ul_config_request_t *ul_config_req) { ul_config_req->ul_config_request_body.rach_prach_frequency_resources, ul_config_req->ul_config_request_body.srs_present); uint16_t num_dropped_indicies = 0; - uint16_t *dropped_indicies = malloc(MAX_DROPPED_INDICIES * sizeof(uint16_t)); + int dropped_indicies[MAX_DROPPED_INDICIES]; uint8_t num_pdus = ul_config_req->ul_config_request_body.number_of_pdus; for (int i = 0; i < num_pdus; i++) { @@ -1305,7 +1312,8 @@ int oai_nfapi_ul_config_req(nfapi_ul_config_request_t *ul_config_req) { uint16_t rnti_j = ul_config_req->ul_config_request_body.ul_config_pdu_list[j].ulsch_cqi_ri_pdu.ulsch_pdu.ulsch_pdu_rel8.rnti; if (is_ue_same(rnti_i, rnti_j)) { - dropped_indicies[i] = j; + assert (num_dropped_indicies < MAX_DROPPED_INDICIES); + dropped_indicies[num_dropped_indicies] = j; num_dropped_indicies++; LOG_E(MAC, "Problem, two cqis being sent to a single UE for rnti %x dropping one\n", rnti_i); @@ -1322,7 +1330,6 @@ int oai_nfapi_ul_config_req(nfapi_ul_config_request_t *ul_config_req) { abort(); } } - free(dropped_indicies); int retval = nfapi_vnf_p7_ul_config_req(p7_config, ul_config_req);