Skip to content

Commit b3b73f4

Browse files
authored
Merge pull request #3327 from cesanta/printoom
close connection on OOM when printing
2 parents 49470f9 + 3c7b2dc commit b3b73f4

File tree

2 files changed

+16
-4
lines changed

2 files changed

+16
-4
lines changed

mongoose.c

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3866,8 +3866,14 @@ struct mg_connection *mg_mqtt_listen(struct mg_mgr *mgr, const char *url,
38663866

38673867
size_t mg_vprintf(struct mg_connection *c, const char *fmt, va_list *ap) {
38683868
size_t old = c->send.len;
3869-
mg_vxprintf(mg_pfn_iobuf, &c->send, fmt, ap);
3870-
return c->send.len - old;
3869+
size_t expected = mg_vxprintf(mg_pfn_iobuf, &c->send, fmt, ap);
3870+
size_t actual = c->send.len - old;
3871+
if (actual != expected) {
3872+
mg_error(c, "OOM");
3873+
c->send.len = old;
3874+
actual = 0;
3875+
}
3876+
return actual;
38713877
}
38723878

38733879
size_t mg_printf(struct mg_connection *c, const char *fmt, ...) {

src/net.c

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,14 @@
99

1010
size_t mg_vprintf(struct mg_connection *c, const char *fmt, va_list *ap) {
1111
size_t old = c->send.len;
12-
mg_vxprintf(mg_pfn_iobuf, &c->send, fmt, ap);
13-
return c->send.len - old;
12+
size_t expected = mg_vxprintf(mg_pfn_iobuf, &c->send, fmt, ap);
13+
size_t actual = c->send.len - old;
14+
if (actual != expected) {
15+
mg_error(c, "OOM");
16+
c->send.len = old;
17+
actual = 0;
18+
}
19+
return actual;
1420
}
1521

1622
size_t mg_printf(struct mg_connection *c, const char *fmt, ...) {

0 commit comments

Comments
 (0)