[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:
parent
2dd577f88c
commit
c5a545039f
|
@ -578,7 +578,7 @@ ogs_gtp_node_t *ogs_gtp_node_add_by_f_teid(
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
node = ogs_gtp_node_new(addr);
|
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);
|
rv = ogs_gtp2_f_teid_to_ip(f_teid, &node->ip);
|
||||||
ogs_expect_or_return_val(rv == OGS_OK, NULL);
|
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));
|
ogs_assert(OGS_OK == ogs_copyaddrinfo(&new, addr));
|
||||||
gnode = ogs_gtp_node_new(new);
|
gnode = ogs_gtp_node_new(new);
|
||||||
|
ogs_expect_or_return_val(gnode, NULL);
|
||||||
|
|
||||||
ogs_assert(gnode);
|
|
||||||
memcpy(&gnode->addr, new, sizeof gnode->addr);
|
memcpy(&gnode->addr, new, sizeof gnode->addr);
|
||||||
|
|
||||||
ogs_list_add(list, gnode);
|
ogs_list_add(list, gnode);
|
||||||
|
|
|
@ -27,6 +27,7 @@ static void _gtpv2_c_recv_cb(short when, ogs_socket_t fd, void *data)
|
||||||
ogs_pkbuf_t *pkbuf = NULL;
|
ogs_pkbuf_t *pkbuf = NULL;
|
||||||
ogs_sockaddr_t from;
|
ogs_sockaddr_t from;
|
||||||
ogs_gtp_node_t *gnode = NULL;
|
ogs_gtp_node_t *gnode = NULL;
|
||||||
|
char frombuf[OGS_ADDRSTRLEN];
|
||||||
|
|
||||||
ogs_assert(fd != INVALID_SOCKET);
|
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);
|
gnode = ogs_gtp_node_find_by_addr(&sgwc_self()->mme_s11_list, &from);
|
||||||
if (!gnode) {
|
if (!gnode) {
|
||||||
gnode = ogs_gtp_node_add_by_addr(&sgwc_self()->mme_s11_list, &from);
|
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;
|
gnode->sock = data;
|
||||||
}
|
}
|
||||||
ogs_assert(e);
|
ogs_assert(e);
|
||||||
|
|
Loading…
Reference in New Issue