From 3c7b2dcd6d166e2e8dd493cd08f16970ffeef3c9 Mon Sep 17 00:00:00 2001 From: "Sergio R. Caprile" Date: Wed, 29 Oct 2025 15:41:00 -0300 Subject: [PATCH] close connection on OOM when printing --- mongoose.c | 10 ++++++++-- src/net.c | 10 ++++++++-- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/mongoose.c b/mongoose.c index f860ab3b..aaff20d6 100644 --- a/mongoose.c +++ b/mongoose.c @@ -3866,8 +3866,14 @@ struct mg_connection *mg_mqtt_listen(struct mg_mgr *mgr, const char *url, size_t mg_vprintf(struct mg_connection *c, const char *fmt, va_list *ap) { size_t old = c->send.len; - mg_vxprintf(mg_pfn_iobuf, &c->send, fmt, ap); - return c->send.len - old; + size_t expected = mg_vxprintf(mg_pfn_iobuf, &c->send, fmt, ap); + size_t actual = c->send.len - old; + if (actual != expected) { + mg_error(c, "OOM"); + c->send.len = old; + actual = 0; + } + return actual; } size_t mg_printf(struct mg_connection *c, const char *fmt, ...) { diff --git a/src/net.c b/src/net.c index ce7db603..4d6bfeeb 100644 --- a/src/net.c +++ b/src/net.c @@ -9,8 +9,14 @@ size_t mg_vprintf(struct mg_connection *c, const char *fmt, va_list *ap) { size_t old = c->send.len; - mg_vxprintf(mg_pfn_iobuf, &c->send, fmt, ap); - return c->send.len - old; + size_t expected = mg_vxprintf(mg_pfn_iobuf, &c->send, fmt, ap); + size_t actual = c->send.len - old; + if (actual != expected) { + mg_error(c, "OOM"); + c->send.len = old; + actual = 0; + } + return actual; } size_t mg_printf(struct mg_connection *c, const char *fmt, ...) {