summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon McVittie <simon.mcvittie@collabora.co.uk>2015-01-06 22:12:16 +0000
committerSimon McVittie <simon.mcvittie@collabora.co.uk>2015-01-29 12:09:40 +0000
commitb5bf338953f3427621ac238293cdcd2914dfc505 (patch)
treeb73c74492d0ae8590181aea70172b03ebd0224ad
parent04056bba4143f516fb58045fa48a733a0711f1c8 (diff)
downloaddbus-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.c11
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;
}
/**