From 8b855a97c2f0e4b1faabcc7ed1d6be5f53514e75 Mon Sep 17 00:00:00 2001 From: Martin Willi Date: Thu, 19 Jun 2014 10:10:54 +0200 Subject: [PATCH] bus: Properly va_copy() argument list before passing it to printf() functions As we later potentially use args again, we can't consume it with printf functions without copying it first. Clone list before passing it to any consuming function. Fixes #621. --- src/libcharon/bus/bus.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/libcharon/bus/bus.c b/src/libcharon/bus/bus.c index d467c3320..d1c138cd1 100644 --- a/src/libcharon/bus/bus.c +++ b/src/libcharon/bus/bus.c @@ -391,7 +391,9 @@ METHOD(bus_t, vlog, void, { len++; data.message = malloc(len); - len = vsnprintf(data.message, len, format, args); + va_copy(data.args, args); + len = vsnprintf(data.message, len, format, data.args); + va_end(data.args); } if (len > 0) {