From: Simon McVittie Date: Tue, 6 Jan 2015 22:12:16 +0000 (+0000) Subject: _dbus_string_append_printf_valist: avoid leaking copy of varargs X-Git-Tag: dbus-1.9.8~23 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b5bf338953f3427621ac238293cdcd2914dfc505;p=thirdparty%2Fdbus.git _dbus_string_append_printf_valist: avoid leaking copy of varargs Bug: https://bugs.freedesktop.org/show_bug.cgi?id=88087 Signed-off-by: Simon McVittie --- diff --git a/dbus/dbus-string.c b/dbus/dbus-string.c index 15cff9c6f..98d9f2b72 100644 --- a/dbus/dbus-string.c +++ b/dbus/dbus-string.c @@ -1073,6 +1073,7 @@ _dbus_string_append_printf_valist (DBusString *str, const char *format, va_list args) { + dbus_bool_t ret = FALSE; int len; va_list args_copy; @@ -1084,21 +1085,21 @@ _dbus_string_append_printf_valist (DBusString *str, len = _dbus_printf_string_upper_bound (format, args); if (len < 0) - return FALSE; + goto out; if (!_dbus_string_lengthen (str, len)) { - /* don't leak the copy */ - va_end (args_copy); - return FALSE; + goto out; } vsprintf ((char*) (real->str + (real->len - len)), format, args_copy); + ret = TRUE; +out: va_end (args_copy); - return TRUE; + return ret; } /**