From 587e79dc0591416fae896cf6fe519b1bd9d634a4 Mon Sep 17 00:00:00 2001 From: hgarrereyn Date: Fri, 26 Sep 2025 14:28:10 -0400 Subject: [PATCH] fix use of va_args in mg_queue_vprintf, fixes #3285 --- mongoose.c | 4 +++- src/printf.c | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/mongoose.c b/mongoose.c index 616e3f1e..5a8da687 100644 --- a/mongoose.c +++ b/mongoose.c @@ -7812,7 +7812,9 @@ bool mg_ota_end(void) { size_t mg_queue_vprintf(struct mg_queue *q, const char *fmt, va_list *ap) { - size_t len = mg_snprintf(NULL, 0, fmt, ap); + va_list ap_copy; + va_copy(ap_copy, *ap); + size_t len = mg_vsnprintf(NULL, 0, fmt, &ap_copy); char *buf; if (len == 0 || mg_queue_book(q, &buf, len + 1) < len + 1) { len = 0; // Nah. Not enough space diff --git a/src/printf.c b/src/printf.c index d9998ccf..1b6107ac 100644 --- a/src/printf.c +++ b/src/printf.c @@ -3,7 +3,9 @@ #include "util.h" size_t mg_queue_vprintf(struct mg_queue *q, const char *fmt, va_list *ap) { - size_t len = mg_snprintf(NULL, 0, fmt, ap); + va_list ap_copy; + va_copy(ap_copy, *ap); + size_t len = mg_vsnprintf(NULL, 0, fmt, &ap_copy); char *buf; if (len == 0 || mg_queue_book(q, &buf, len + 1) < len + 1) { len = 0; // Nah. Not enough space