diff --git a/lib/core/ogs-pkbuf.c b/lib/core/ogs-pkbuf.c index a283ff24b..ed7048622 100644 --- a/lib/core/ogs-pkbuf.c +++ b/lib/core/ogs-pkbuf.c @@ -318,7 +318,6 @@ ogs_pkbuf_t *ogs_pkbuf_copy_debug(ogs_pkbuf_t *pkbuf, const char *file_line) newbuf = ogs_pkbuf_alloc_debug(NULL, size, file_line); if (!newbuf) { ogs_error("ogs_pkbuf_alloc() failed [size=%d]", size); - ogs_pkbuf_free(pkbuf); return NULL; } @@ -345,7 +344,6 @@ ogs_pkbuf_t *ogs_pkbuf_copy_debug(ogs_pkbuf_t *pkbuf, const char *file_line) ogs_pool_alloc(&pool->pkbuf, &newbuf); if (!newbuf) { ogs_error("ogs_pkbuf_copy() failed"); - ogs_pkbuf_free(pkbuf); ogs_thread_mutex_unlock(&pool->mutex); return NULL; } diff --git a/src/amf/nas-path.c b/src/amf/nas-path.c index b667a17d3..262834299 100644 --- a/src/amf/nas-path.c +++ b/src/amf/nas-path.c @@ -108,6 +108,7 @@ int nas_5gs_send_registration_accept(amf_ue_t *amf_ue) amf_ue->t3550.pkbuf = ogs_pkbuf_copy(gmmbuf); if (!amf_ue->t3550.pkbuf) { ogs_error("ogs_pkbuf_copy(amf_ue->t3550.pkbuf) failed"); + ogs_pkbuf_free(gmmbuf); return OGS_ERROR; } ogs_timer_start(amf_ue->t3550.timer, @@ -373,6 +374,7 @@ int nas_5gs_send_de_registration_request(amf_ue_t *amf_ue, amf_ue->t3522.pkbuf = ogs_pkbuf_copy(gmmbuf); if (!amf_ue->t3522.pkbuf) { ogs_error("ogs_pkbuf_copy(amf_ue->t3522.pkbuf) failed"); + ogs_pkbuf_free(gmmbuf); return OGS_ERROR; } ogs_timer_start(amf_ue->t3522.timer, @@ -406,6 +408,7 @@ int nas_5gs_send_identity_request(amf_ue_t *amf_ue) amf_ue->t3570.pkbuf = ogs_pkbuf_copy(gmmbuf); if (!amf_ue->t3570.pkbuf) { ogs_error("ogs_pkbuf_copy(amf_ue->t3570.pkbuf) failed"); + ogs_pkbuf_free(gmmbuf); return OGS_ERROR; } ogs_timer_start(amf_ue->t3570.timer, @@ -439,6 +442,7 @@ int nas_5gs_send_authentication_request(amf_ue_t *amf_ue) amf_ue->t3560.pkbuf = ogs_pkbuf_copy(gmmbuf); if (!amf_ue->t3560.pkbuf) { ogs_error("ogs_pkbuf_copy(amf_ue->t3560.pkbuf) failed"); + ogs_pkbuf_free(gmmbuf); return OGS_ERROR; } ogs_timer_start(amf_ue->t3560.timer, @@ -495,6 +499,7 @@ int nas_5gs_send_security_mode_command(amf_ue_t *amf_ue) amf_ue->t3560.pkbuf = ogs_pkbuf_copy(gmmbuf); if (!amf_ue->t3560.pkbuf) { ogs_error("ogs_pkbuf_copy(amf_ue->t3560.pkbuf) failed"); + ogs_pkbuf_free(gmmbuf); return OGS_ERROR; } ogs_timer_start(amf_ue->t3560.timer, @@ -522,6 +527,7 @@ int nas_5gs_send_configuration_update_command( amf_ue->t3555.pkbuf = ogs_pkbuf_copy(gmmbuf); if (!amf_ue->t3555.pkbuf) { ogs_error("ogs_pkbuf_copy(amf_ue->t3555.pkbuf) failed"); + ogs_pkbuf_free(gmmbuf); return OGS_ERROR; } ogs_timer_start(amf_ue->t3555.timer, @@ -542,6 +548,7 @@ int nas_5gs_send_configuration_update_command( amf_ue->t3555.pkbuf = ogs_pkbuf_copy(gmmbuf); if (!amf_ue->t3555.pkbuf) { ogs_error("ogs_pkbuf_copy(amf_ue->t3555.pkbuf) failed"); + ogs_pkbuf_free(gmmbuf); return OGS_ERROR; } ogs_timer_start(amf_ue->t3555.timer, diff --git a/src/amf/ngap-path.c b/src/amf/ngap-path.c index 5f8c3898a..873f61497 100644 --- a/src/amf/ngap-path.c +++ b/src/amf/ngap-path.c @@ -409,6 +409,7 @@ int ngap_send_paging(amf_ue_t *amf_ue) amf_ue->t3513.pkbuf = ogs_pkbuf_copy(ngapbuf); if (!amf_ue->t3513.pkbuf) { ogs_error("ogs_pkbuf_copy() failed"); + ogs_pkbuf_free(ngapbuf); return OGS_ERROR; } diff --git a/src/mme/emm-sm.c b/src/mme/emm-sm.c index b0d6dd189..570069818 100644 --- a/src/mme/emm-sm.c +++ b/src/mme/emm-sm.c @@ -1243,7 +1243,11 @@ void emm_state_initial_context_setup(ogs_fsm_t *s, mme_event_t *e) } mme_ue->t3450.pkbuf = ogs_pkbuf_copy(emmbuf); - ogs_assert(mme_ue->t3450.pkbuf); + if (!mme_ue->t3450.pkbuf) { + ogs_error("ogs_pkbuf_copy() failed"); + ogs_pkbuf_free(emmbuf); + return; + } ogs_timer_start(mme_ue->t3450.timer, mme_timer_cfg(MME_TIMER_T3450)->duration); diff --git a/src/mme/nas-path.c b/src/mme/nas-path.c index b26fbea85..275917ea7 100644 --- a/src/mme/nas-path.c +++ b/src/mme/nas-path.c @@ -139,6 +139,7 @@ int nas_eps_send_attach_accept(mme_ue_t *mme_ue) mme_ue->t3450.pkbuf = ogs_pkbuf_copy(emmbuf); if (!mme_ue->t3450.pkbuf) { ogs_error("ogs_pkbuf_copy(mme_ue->t3450.pkbuf) failed"); + ogs_pkbuf_free(emmbuf); return OGS_ERROR; } ogs_timer_start(mme_ue->t3450.timer, @@ -215,6 +216,7 @@ int nas_eps_send_identity_request(mme_ue_t *mme_ue) mme_ue->t3470.pkbuf = ogs_pkbuf_copy(emmbuf); if (!mme_ue->t3470.pkbuf) { ogs_error("ogs_pkbuf_copy(mme_ue->t3470.pkbuf) failed"); + ogs_pkbuf_free(emmbuf); return OGS_ERROR; } ogs_timer_start(mme_ue->t3470.timer, @@ -248,6 +250,7 @@ int nas_eps_send_authentication_request(mme_ue_t *mme_ue) mme_ue->t3460.pkbuf = ogs_pkbuf_copy(emmbuf); if (!mme_ue->t3460.pkbuf) { ogs_error("ogs_pkbuf_copy(mme_ue->t3460.pkbuf) failed"); + ogs_pkbuf_free(emmbuf); return OGS_ERROR; } ogs_timer_start(mme_ue->t3460.timer, @@ -281,6 +284,7 @@ int nas_eps_send_security_mode_command(mme_ue_t *mme_ue) mme_ue->t3460.pkbuf = ogs_pkbuf_copy(emmbuf); if (!mme_ue->t3460.pkbuf) { ogs_error("ogs_pkbuf_copy(mme_ue->t3460.pkbuf) failed"); + ogs_pkbuf_free(emmbuf); return OGS_ERROR; } ogs_timer_start(mme_ue->t3460.timer, @@ -333,6 +337,7 @@ int nas_eps_send_detach_request(mme_ue_t *mme_ue) mme_ue->t3422.pkbuf = ogs_pkbuf_copy(emmbuf); if (!mme_ue->t3422.pkbuf) { ogs_error("ogs_pkbuf_copy(mme_ue->t3422.pkbuf) failed"); + ogs_pkbuf_free(emmbuf); return OGS_ERROR; } ogs_timer_start(mme_ue->t3422.timer, @@ -446,6 +451,7 @@ int nas_eps_send_esm_information_request(mme_bearer_t *bearer) bearer->t3489.pkbuf = ogs_pkbuf_copy(esmbuf); if (!bearer->t3489.pkbuf) { ogs_error("ogs_pkbuf_copy(bearer->t3489) failed"); + ogs_pkbuf_free(esmbuf); return OGS_ERROR; } ogs_timer_start(bearer->t3489.timer, @@ -669,6 +675,7 @@ int nas_eps_send_tau_accept( mme_ue->t3450.pkbuf = ogs_pkbuf_copy(emmbuf); if (!mme_ue->t3450.pkbuf) { ogs_error("ogs_pkbuf_copy(mme_ue->t3450.pkbuf) failed"); + ogs_pkbuf_free(emmbuf); return OGS_ERROR; } ogs_timer_start(mme_ue->t3450.timer, diff --git a/src/mme/s1ap-path.c b/src/mme/s1ap-path.c index 5ed5b54da..766ca067c 100644 --- a/src/mme/s1ap-path.c +++ b/src/mme/s1ap-path.c @@ -400,6 +400,7 @@ int s1ap_send_paging(mme_ue_t *mme_ue, S1AP_CNDomain_t cn_domain) mme_ue->t3413.pkbuf = ogs_pkbuf_copy(s1apbuf); if (!mme_ue->t3413.pkbuf) { ogs_error("ogs_pkbuf_copy() failed"); + ogs_pkbuf_free(s1apbuf); return OGS_ERROR; }