mirror of
https://gitlab.freedesktop.org/dbus/dbus.git
synced 2026-05-09 03:48:02 +02:00
_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>
This commit is contained in:
parent
04056bba41
commit
b5bf338953
1 changed files with 6 additions and 5 deletions
|
|
@ -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;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue