diff --git a/src/udm/context.c b/src/udm/context.c index f39c91cc2..1a009f382 100644 --- a/src/udm/context.c +++ b/src/udm/context.c @@ -132,7 +132,10 @@ udm_ue_t *udm_ue_add(char *suci) ogs_assert(suci); ogs_pool_alloc(&udm_ue_pool, &udm_ue); - ogs_assert(udm_ue); + if (!udm_ue) { + ogs_error("No memory pool [%s]", suci); + return NULL; + } memset(udm_ue, 0, sizeof *udm_ue); /* SBI Type */ @@ -140,14 +143,30 @@ udm_ue_t *udm_ue_add(char *suci) udm_ue->ctx_id = ogs_msprintf("%d", (int)ogs_pool_index(&udm_ue_pool, udm_ue)); - ogs_assert(udm_ue->ctx_id); + if (!udm_ue->ctx_id) { + ogs_error("No memory for udm_ue->ctx_id [%s]", suci); + ogs_pool_free(&udm_ue_pool, udm_ue); + return NULL; + } udm_ue->suci = ogs_strdup(suci); - ogs_assert(udm_ue->suci); - ogs_hash_set(self.suci_hash, udm_ue->suci, strlen(udm_ue->suci), udm_ue); + if (!udm_ue->suci) { + ogs_error("No memory for udm_ue->suci [%s]", suci); + ogs_free(udm_ue->ctx_id); + ogs_pool_free(&udm_ue_pool, udm_ue); + return NULL; + } udm_ue->supi = ogs_supi_from_supi_or_suci(udm_ue->suci); - ogs_assert(udm_ue->supi); + if (!udm_ue->supi) { + ogs_error("No memory for udm_ue->supi [%s]", suci); + ogs_free(udm_ue->suci); + ogs_free(udm_ue->ctx_id); + ogs_pool_free(&udm_ue_pool, udm_ue); + return NULL; + } + + ogs_hash_set(self.suci_hash, udm_ue->suci, strlen(udm_ue->suci), udm_ue); ogs_hash_set(self.supi_hash, udm_ue->supi, strlen(udm_ue->supi), udm_ue); memset(&e, 0, sizeof(e)); diff --git a/src/udm/udm-sm.c b/src/udm/udm-sm.c index 0d531d67f..ebf0214c0 100644 --- a/src/udm/udm-sm.c +++ b/src/udm/udm-sm.c @@ -163,7 +163,15 @@ void udm_state_operational(ogs_fsm_t *s, udm_event_t *e) message.h.resource.component[0]); if (!udm_ue) { udm_ue = udm_ue_add(message.h.resource.component[0]); - ogs_assert(udm_ue); + if (!udm_ue) { + ogs_error("Invalid Request [%s]", + message.h.resource.component[0]); + ogs_assert(true == + ogs_sbi_server_send_error(stream, + OGS_SBI_HTTP_STATUS_BAD_REQUEST, + &message, NULL, NULL)); + break; + } } }