[GTP] Avoid abort if ogs_gtp_node_new() returns NULL (#1633)

* [GTP] Avoid abort if ogs_gtp_node_new() returns NULL

* [SGWC] Avoid abort if ogs_gtp_node_add_by_addr() returns NULL
This commit is contained in:
Pau Espin 2022-06-29 03:28:18 +02:00 committed by GitHub
parent 2dd577f88c
commit c5a545039f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 9 additions and 3 deletions

View File

@ -578,7 +578,7 @@ ogs_gtp_node_t *ogs_gtp_node_add_by_f_teid(
#endif
node = ogs_gtp_node_new(addr);
ogs_assert(node);
ogs_expect_or_return_val(node, NULL);
rv = ogs_gtp2_f_teid_to_ip(f_teid, &node->ip);
ogs_expect_or_return_val(rv == OGS_OK, NULL);
@ -598,8 +598,8 @@ ogs_gtp_node_t *ogs_gtp_node_add_by_addr(ogs_list_t *list, ogs_sockaddr_t *addr)
ogs_assert(OGS_OK == ogs_copyaddrinfo(&new, addr));
gnode = ogs_gtp_node_new(new);
ogs_expect_or_return_val(gnode, NULL);
ogs_assert(gnode);
memcpy(&gnode->addr, new, sizeof gnode->addr);
ogs_list_add(list, gnode);

View File

@ -27,6 +27,7 @@ static void _gtpv2_c_recv_cb(short when, ogs_socket_t fd, void *data)
ogs_pkbuf_t *pkbuf = NULL;
ogs_sockaddr_t from;
ogs_gtp_node_t *gnode = NULL;
char frombuf[OGS_ADDRSTRLEN];
ogs_assert(fd != INVALID_SOCKET);
@ -83,7 +84,12 @@ static void _gtpv2_c_recv_cb(short when, ogs_socket_t fd, void *data)
gnode = ogs_gtp_node_find_by_addr(&sgwc_self()->mme_s11_list, &from);
if (!gnode) {
gnode = ogs_gtp_node_add_by_addr(&sgwc_self()->mme_s11_list, &from);
ogs_assert(gnode);
if (!gnode) {
ogs_error("Failed to create new gnode(%s:%u), mempool full, ignoring msg!",
OGS_ADDR(&from, frombuf), OGS_PORT(&from));
ogs_pkbuf_free(pkbuf);
return;
}
gnode->sock = data;
}
ogs_assert(e);