From 413b84b1795a92cdd69a763b2ef618d011b67d28 Mon Sep 17 00:00:00 2001 From: Robert Schmidt Date: Thu, 24 Apr 2025 18:41:42 +0200 Subject: [PATCH] Allocate gNB_DU_ID before storing ID Update the test so it would catch that bug. Check in eq_() that both gNB_DU_IDs would be present, or not, using xor. --- openair2/F1AP/lib/f1ap_interface_management.c | 3 +++ openair2/F1AP/tests/f1ap_lib_test.c | 2 ++ 2 files changed, 5 insertions(+) diff --git a/openair2/F1AP/lib/f1ap_interface_management.c b/openair2/F1AP/lib/f1ap_interface_management.c index 2ad4ab6467..db42e6842e 100644 --- a/openair2/F1AP/lib/f1ap_interface_management.c +++ b/openair2/F1AP/lib/f1ap_interface_management.c @@ -1559,6 +1559,7 @@ bool decode_f1ap_du_configuration_update(const F1AP_F1AP_PDU_t *pdu, f1ap_gnb_du break; case F1AP_ProtocolIE_ID_id_gNB_DU_ID: /* gNB-DU ID (O)*/ + out->gNB_DU_ID = malloc_or_fail(sizeof(*out->gNB_DU_ID)); asn_INTEGER2ulong(&ie->value.choice.GNB_DU_ID, out->gNB_DU_ID); break; case F1AP_ProtocolIE_ID_id_GNB_DU_TNL_Association_To_Remove_List: @@ -1586,6 +1587,8 @@ void free_f1ap_du_configuration_update(const f1ap_gnb_du_configuration_update_t */ bool eq_f1ap_du_configuration_update(const f1ap_gnb_du_configuration_update_t *a, const f1ap_gnb_du_configuration_update_t *b) { + if ((a->gNB_DU_ID != NULL) ^ (b->gNB_DU_ID != NULL)) + return false; if (a->gNB_DU_ID != NULL && b->gNB_DU_ID != NULL) _F1_EQ_CHECK_LONG(*a->gNB_DU_ID, *b->gNB_DU_ID); _F1_EQ_CHECK_LONG(a->transaction_id, b->transaction_id); diff --git a/openair2/F1AP/tests/f1ap_lib_test.c b/openair2/F1AP/tests/f1ap_lib_test.c index aa770f47ea..1a1b82e119 100644 --- a/openair2/F1AP/tests/f1ap_lib_test.c +++ b/openair2/F1AP/tests/f1ap_lib_test.c @@ -567,6 +567,8 @@ static void test_f1ap_du_configuration_update(void) }; orig.cell_to_modify[0].sys_info = calloc_or_fail(1, sizeof(*orig.cell_to_modify[0].sys_info)); *orig.cell_to_modify[0].sys_info = sys_info; + orig.gNB_DU_ID = malloc_or_fail(sizeof(*orig.gNB_DU_ID)); + *orig.gNB_DU_ID = 12; F1AP_F1AP_PDU_t *f1enc = encode_f1ap_du_configuration_update(&orig); F1AP_F1AP_PDU_t *f1dec = f1ap_encode_decode(f1enc);