From 2c7ee8cd2034cd239d6e1733ad9689586399b7e9 Mon Sep 17 00:00:00 2001 From: Wu Jing Date: Sat, 8 Jun 2019 13:40:19 +0900 Subject: [PATCH] avoid segfault in S1AP when doing ReleaseCommane s1ap_ue_context=NULL is possible --- openair2/RRC/LTE/rrc_eNB_S1AP.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/openair2/RRC/LTE/rrc_eNB_S1AP.c b/openair2/RRC/LTE/rrc_eNB_S1AP.c index b26e2c1cb0..ffd2a6aa29 100644 --- a/openair2/RRC/LTE/rrc_eNB_S1AP.c +++ b/openair2/RRC/LTE/rrc_eNB_S1AP.c @@ -257,6 +257,14 @@ rrc_eNB_S1AP_get_ue_ids( } if (ue_desc_p != NULL) { + struct s1ap_eNB_ue_context_s *s1ap_ue_context_p = NULL; + if ((s1ap_ue_context_p = RB_REMOVE(s1ap_ue_map, &s1ap_eNB_instance_p->s1ap_ue_head, ue_desc_p)) != NULL) { + LOG_E(RRC, "Removed UE context eNB_ue_s1ap_id %u\n", s1ap_ue_context_p->eNB_ue_s1ap_id); + s1ap_eNB_free_ue_context(s1ap_ue_context_p); + } else { + LOG_E(RRC, "Removing UE context eNB_ue_s1ap_id %u: did not find context\n",ue_desc_p->eNB_ue_s1ap_id); + } + return NULL; //skip the operation below to avoid loop result = rrc_eNB_S1AP_get_ue_ids(rrc_instance_pP, ue_desc_p->ue_initial_id, eNB_ue_s1ap_id); if (result != NULL) {