diff options
author | Simon McVittie <simon.mcvittie@collabora.co.uk> | 2015-01-06 22:12:16 +0000 |
---|---|---|
committer | Simon McVittie <simon.mcvittie@collabora.co.uk> | 2015-01-29 12:09:40 +0000 |
commit | b5bf338953f3427621ac238293cdcd2914dfc505 (patch) | |
tree | b73c74492d0ae8590181aea70172b03ebd0224ad | |
parent | 04056bba4143f516fb58045fa48a733a0711f1c8 (diff) | |
download | dbus-b5bf338953f3427621ac238293cdcd2914dfc505.tar.gz |
_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 <simon.mcvittie@collabora.co.uk>
-rw-r--r-- | dbus/dbus-string.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/dbus/dbus-string.c b/dbus/dbus-string.c index 15cff9c6..98d9f2b7 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; } /** |