From: Martin Willi Date: Thu, 19 Jun 2014 08:10:54 +0000 (+0200) Subject: bus: Properly va_copy() argument list before passing it to printf() functions X-Git-Tag: 5.2.0rc1~34 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8b855a97c2f0e4b1faabcc7ed1d6be5f53514e75;p=thirdparty%2Fstrongswan.git 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. --- diff --git a/src/libcharon/bus/bus.c b/src/libcharon/bus/bus.c index d467c3320f..d1c138cd19 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) {