]> git.ipfire.org Git - thirdparty/dbus.git/commitdiff
_dbus_string_append_printf_valist: avoid leaking copy of varargs
authorSimon McVittie <simon.mcvittie@collabora.co.uk>
Tue, 6 Jan 2015 22:12:16 +0000 (22:12 +0000)
committerSimon McVittie <simon.mcvittie@collabora.co.uk>
Thu, 29 Jan 2015 12:09:40 +0000 (12:09 +0000)
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=88087
Signed-off-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
dbus/dbus-string.c

index 15cff9c6f3ee576e7459eacd8eccdc61b15dab99..98d9f2b7216e0e64fd738e942d6ecb2588b295ef 100644 (file)
@@ -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;
 }
 
 /**