fix the bug OGS_ADDR crash [#551]

This commit is contained in:
Sukchan Lee 2020-09-22 21:20:13 -04:00
parent 529e765b96
commit 8c7d401636
5 changed files with 26 additions and 41 deletions

View File

@ -553,7 +553,7 @@ void amf_state_operational(ogs_fsm_t *s, amf_event_t *e)
ogs_assert(addr);
ogs_info("gNB-N1 accepted[%s] in master_sm module",
OGS_ADDR(addr, buf));
OGS_ADDR(addr, buf));
gnb = amf_gnb_find_by_addr(addr);
if (!gnb) {
@ -563,6 +563,7 @@ void amf_state_operational(ogs_fsm_t *s, amf_event_t *e)
ogs_warn("gNB context duplicated with IP-address [%s]!!!",
OGS_ADDR(addr, buf));
ogs_sock_destroy(sock);
ogs_free(addr);
ogs_warn("N1 Socket Closed");
}
@ -588,7 +589,7 @@ void amf_state_operational(ogs_fsm_t *s, amf_event_t *e)
ogs_min(max_num_of_ostreams, gnb->max_num_of_ostreams);
ogs_debug("gNB-N1 SCTP_COMM_UP[%s] Max Num of Outbound Streams[%d]",
OGS_ADDR(addr, buf), gnb->max_num_of_ostreams);
OGS_ADDR(gnb->addr, buf), gnb->max_num_of_ostreams);
break;
@ -599,8 +600,6 @@ void amf_state_operational(ogs_fsm_t *s, amf_event_t *e)
ogs_assert(addr);
gnb = amf_gnb_find_by_addr(addr);
ogs_free(addr);
if (gnb) {
ogs_info("gNB-N1[%s] connection refused!!!",
OGS_ADDR(addr, buf));
@ -609,6 +608,7 @@ void amf_state_operational(ogs_fsm_t *s, amf_event_t *e)
ogs_warn("gNB-N1[%s] connection refused, Already Removed!",
OGS_ADDR(addr, buf));
}
ogs_free(addr);
break;
case AMF_EVT_NGAP_MESSAGE:

View File

@ -167,7 +167,7 @@ void mme_state_operational(ogs_fsm_t *s, mme_event_t *e)
ogs_assert(addr);
ogs_info("eNB-S1 accepted[%s] in master_sm module",
OGS_ADDR(addr, buf));
OGS_ADDR(addr, buf));
enb = mme_enb_find_by_addr(addr);
if (!enb) {
@ -177,6 +177,7 @@ void mme_state_operational(ogs_fsm_t *s, mme_event_t *e)
ogs_warn("eNB context duplicated with IP-address [%s]!!!",
OGS_ADDR(addr, buf));
ogs_sock_destroy(sock);
ogs_free(addr);
ogs_warn("S1 Socket Closed");
}
@ -202,7 +203,7 @@ void mme_state_operational(ogs_fsm_t *s, mme_event_t *e)
ogs_min(max_num_of_ostreams, enb->max_num_of_ostreams);
ogs_debug("eNB-S1 SCTP_COMM_UP[%s] Max Num of Outbound Streams[%d]",
OGS_ADDR(addr, buf), enb->max_num_of_ostreams);
OGS_ADDR(enb->addr, buf), enb->max_num_of_ostreams);
break;
@ -213,16 +214,14 @@ void mme_state_operational(ogs_fsm_t *s, mme_event_t *e)
ogs_assert(addr);
enb = mme_enb_find_by_addr(addr);
ogs_free(addr);
if (enb) {
ogs_info("eNB-S1[%s] connection refused!!!",
OGS_ADDR(addr, buf));
ogs_info("eNB-S1[%s] connection refused!!!", OGS_ADDR(addr, buf));
mme_enb_remove(enb);
} else {
ogs_warn("eNB-S1[%s] connection refused, Already Removed!",
OGS_ADDR(addr, buf));
}
ogs_free(addr);
break;
case MME_EVT_S1AP_MESSAGE:
@ -657,7 +656,7 @@ void mme_state_operational(ogs_fsm_t *s, mme_event_t *e)
ogs_min(max_num_of_ostreams, vlr->max_num_of_ostreams);
ogs_debug("VLR-SGs SCTP_COMM_UP[%s] Max Num of Outbound Streams[%d]",
OGS_ADDR(addr, buf), vlr->max_num_of_ostreams);
OGS_ADDR(vlr->addr, buf), vlr->max_num_of_ostreams);
e->vlr = vlr;
ogs_fsm_dispatch(&vlr->sm, e);
@ -680,11 +679,11 @@ void mme_state_operational(ogs_fsm_t *s, mme_event_t *e)
ogs_fsm_dispatch(&vlr->sm, e);
ogs_info("VLR-SGs[%s] connection refused!!!",
OGS_ADDR(addr, buf));
OGS_ADDR(vlr->addr, buf));
} else {
ogs_warn("VLR-SGs[%s] connection refused, Already Removed!",
OGS_ADDR(addr, buf));
OGS_ADDR(vlr->addr, buf));
}
break;

View File

@ -451,8 +451,7 @@ void s1ap_handle_ue_capability_info_indication(
}
}
ogs_debug(" IP[%s] ENB_ID[%d]",
OGS_ADDR(enb->addr, buf), enb->enb_id);
ogs_debug(" IP[%s] ENB_ID[%d]", OGS_ADDR(enb->addr, buf), enb->enb_id);
ogs_assert(ENB_UE_S1AP_ID);
enb_ue = enb_ue_find_by_enb_ue_s1ap_id(enb, *ENB_UE_S1AP_ID);
@ -1224,8 +1223,7 @@ void s1ap_handle_path_switch_request(
}
}
ogs_debug(" IP[%s] ENB_ID[%d]",
OGS_ADDR(enb->addr, buf), enb->enb_id);
ogs_debug(" IP[%s] ENB_ID[%d]", OGS_ADDR(enb->addr, buf), enb->enb_id);
ogs_assert(EUTRAN_CGI);
pLMNidentity = &EUTRAN_CGI->pLMNidentity;
@ -1391,8 +1389,7 @@ void s1ap_handle_enb_configuration_transfer(
}
}
ogs_debug(" IP[%s] ENB_ID[%d]",
OGS_ADDR(enb->addr, buf), enb->enb_id);
ogs_debug(" IP[%s] ENB_ID[%d]", OGS_ADDR(enb->addr, buf), enb->enb_id);
if (SONConfigurationTransfer) {
S1AP_TargeteNB_ID_t *targeteNB_ID =
@ -1500,8 +1497,7 @@ void s1ap_handle_handover_required(mme_enb_t *enb, ogs_s1ap_message_t *message)
}
}
ogs_debug(" IP[%s] ENB_ID[%d]",
OGS_ADDR(enb->addr, buf), enb->enb_id);
ogs_debug(" IP[%s] ENB_ID[%d]", OGS_ADDR(enb->addr, buf), enb->enb_id);
ogs_assert(TargetID);
switch (TargetID->present) {
@ -1606,8 +1602,7 @@ void s1ap_handle_handover_request_ack(
break;
}
}
ogs_debug(" IP[%s] ENB_ID[%d]",
OGS_ADDR(enb->addr, buf), enb->enb_id);
ogs_debug(" IP[%s] ENB_ID[%d]", OGS_ADDR(enb->addr, buf), enb->enb_id);
ogs_assert(MME_UE_S1AP_ID);
ogs_assert(ENB_UE_S1AP_ID);
@ -1724,8 +1719,7 @@ void s1ap_handle_handover_failure(mme_enb_t *enb, ogs_s1ap_message_t *message)
}
}
ogs_debug(" IP[%s] ENB_ID[%d]",
OGS_ADDR(enb->addr, buf), enb->enb_id);
ogs_debug(" IP[%s] ENB_ID[%d]", OGS_ADDR(enb->addr, buf), enb->enb_id);
ogs_assert(MME_UE_S1AP_ID);
ogs_assert(Cause);
@ -1791,8 +1785,7 @@ void s1ap_handle_handover_cancel(mme_enb_t *enb, ogs_s1ap_message_t *message)
break;
}
}
ogs_debug(" IP[%s] ENB_ID[%d]",
OGS_ADDR(enb->addr, buf), enb->enb_id);
ogs_debug(" IP[%s] ENB_ID[%d]", OGS_ADDR(enb->addr, buf), enb->enb_id);
ogs_assert(MME_UE_S1AP_ID);
ogs_assert(ENB_UE_S1AP_ID);
@ -1867,8 +1860,7 @@ void s1ap_handle_enb_status_transfer(mme_enb_t *enb, ogs_s1ap_message_t *message
break;
}
}
ogs_debug(" IP[%s] ENB_ID[%d]",
OGS_ADDR(enb->addr, buf), enb->enb_id);
ogs_debug(" IP[%s] ENB_ID[%d]", OGS_ADDR(enb->addr, buf), enb->enb_id);
ogs_assert(MME_UE_S1AP_ID);
ogs_assert(ENB_UE_S1AP_ID);
@ -1944,8 +1936,7 @@ void s1ap_handle_handover_notification(
break;
}
}
ogs_debug(" IP[%s] ENB_ID[%d]",
OGS_ADDR(enb->addr, buf), enb->enb_id);
ogs_debug(" IP[%s] ENB_ID[%d]", OGS_ADDR(enb->addr, buf), enb->enb_id);
ogs_assert(EUTRAN_CGI);
pLMNidentity = &EUTRAN_CGI->pLMNidentity;
@ -2065,8 +2056,7 @@ void s1ap_handle_s1_reset(
}
}
ogs_debug(" IP[%s] ENB_ID[%d]",
OGS_ADDR(enb->addr, buf), enb->enb_id);
ogs_debug(" IP[%s] ENB_ID[%d]", OGS_ADDR(enb->addr, buf), enb->enb_id);
ogs_assert(Cause);
ogs_debug(" Cause[Group:%d Cause:%d]",
@ -2161,8 +2151,7 @@ void s1ap_handle_write_replace_warning_response(
ogs_debug("[MME] Write replace warning response");
ogs_debug(" IP[%s] ENB_ID[%d]",
OGS_ADDR(enb->addr, buf), enb->enb_id);
ogs_debug(" IP[%s] ENB_ID[%d]", OGS_ADDR(enb->addr, buf), enb->enb_id);
}
@ -2186,6 +2175,5 @@ void s1ap_handle_kill_response(
ogs_debug("[MME] Kill response");
ogs_debug(" IP[%s] ENB_ID[%d]",
OGS_ADDR(enb->addr, buf), enb->enb_id);
ogs_debug(" IP[%s] ENB_ID[%d]", OGS_ADDR(enb->addr, buf), enb->enb_id);
}

View File

@ -75,8 +75,7 @@ int s1ap_send_to_enb(mme_enb_t *enb, ogs_pkbuf_t *pkbuf, uint16_t stream_no)
ogs_assert(pkbuf);
ogs_assert(enb->sock);
ogs_debug(" IP[%s] ENB_ID[%d]",
OGS_ADDR(enb->addr, buf), enb->enb_id);
ogs_debug(" IP[%s] ENB_ID[%d]", OGS_ADDR(enb->addr, buf), enb->enb_id);
rv = s1ap_send(enb->sock, pkbuf,
enb->sock_type == SOCK_STREAM ? NULL : enb->addr,

View File

@ -108,8 +108,7 @@ void s1ap_accept_handler(ogs_sock_t *sock)
ogs_info("eNB-S1 accepted[%s]:%d in s1_path module",
OGS_ADDR(addr, buf), OGS_PORT(addr));
s1ap_event_push(MME_EVT_S1AP_LO_ACCEPT,
new, addr, NULL, 0, 0);
s1ap_event_push(MME_EVT_S1AP_LO_ACCEPT, new, addr, NULL, 0, 0);
} else {
ogs_log_message(OGS_LOG_ERROR, ogs_socket_errno, "accept() failed");
}