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, ...) {