From 7d53c52a6b87157de53fdac6e63c8477433f0395 Mon Sep 17 00:00:00 2001 From: "Sergio R. Caprile" Date: Thu, 27 Apr 2023 11:34:23 -0300 Subject: [PATCH] Check for calloc() failure in MIP --- mongoose.c | 5 +++++ src/tcpip/tcpip.c | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/mongoose.c b/mongoose.c index 1cc814e4..2be0ccff 100644 --- a/mongoose.c +++ b/mongoose.c @@ -7914,6 +7914,10 @@ static void settmout(struct mg_connection *c, uint8_t type) { static struct mg_connection *accept_conn(struct mg_connection *lsn, struct pkt *pkt) { struct mg_connection *c = mg_alloc_conn(lsn->mgr); + if (c == NULL) { + MG_ERROR(("OOM")); + return NULL; + } struct connstate *s = (struct connstate *) (c + 1); s->seq = mg_ntohl(pkt->tcp->ack), s->ack = mg_ntohl(pkt->tcp->seq); memcpy(s->mac, pkt->eth->src, sizeof(s->mac)); @@ -8273,6 +8277,7 @@ void mg_tcpip_init(struct mg_mgr *mgr, struct mg_tcpip_if *ifp) { mg_random(&ifp->eport, sizeof(ifp->eport)); // Random from 0 to 65535 ifp->eport |= MG_EPHEMERAL_PORT_BASE; // Random from MG_EPHEMERAL_PORT_BASE to 65535 + if (ifp->tx.ptr == NULL || ifp->recv_queue.buf == NULL) MG_ERROR(("OOM")); } } diff --git a/src/tcpip/tcpip.c b/src/tcpip/tcpip.c index d6649861..2b490aaf 100644 --- a/src/tcpip/tcpip.c +++ b/src/tcpip/tcpip.c @@ -470,6 +470,10 @@ static void settmout(struct mg_connection *c, uint8_t type) { static struct mg_connection *accept_conn(struct mg_connection *lsn, struct pkt *pkt) { struct mg_connection *c = mg_alloc_conn(lsn->mgr); + if (c == NULL) { + MG_ERROR(("OOM")); + return NULL; + } struct connstate *s = (struct connstate *) (c + 1); s->seq = mg_ntohl(pkt->tcp->ack), s->ack = mg_ntohl(pkt->tcp->seq); memcpy(s->mac, pkt->eth->src, sizeof(s->mac)); @@ -829,6 +833,7 @@ void mg_tcpip_init(struct mg_mgr *mgr, struct mg_tcpip_if *ifp) { mg_random(&ifp->eport, sizeof(ifp->eport)); // Random from 0 to 65535 ifp->eport |= MG_EPHEMERAL_PORT_BASE; // Random from MG_EPHEMERAL_PORT_BASE to 65535 + if (ifp->tx.ptr == NULL || ifp->recv_queue.buf == NULL) MG_ERROR(("OOM")); } }