diff options
author | Ralf Habacker <ralf.habacker@freenet.de> | 2020-04-27 12:01:30 +0000 |
---|---|---|
committer | Ralf Habacker <ralf.habacker@freenet.de> | 2020-04-27 12:01:30 +0000 |
commit | 062f62a3de21658aa0a010269f549deb2b86a2ea (patch) | |
tree | c8eb44630d8f4a9b530b6f06204f2889612c468f /dbus | |
parent | da0db314a3c3fca7290ca0263e1ed0954ad9a90d (diff) | |
parent | e3075c3cfa98bd5addd6b4831a476fa488960a83 (diff) | |
download | dbus-062f62a3de21658aa0a010269f549deb2b86a2ea.tar.gz |
Merge branch 'dbus_logv-uses-dbusstring' into 'master'
Fix possible truncation of protocol output in dbus_logv()
See merge request dbus/dbus!134
Diffstat (limited to 'dbus')
-rw-r--r-- | dbus/dbus-internals.c | 4 | ||||
-rw-r--r-- | dbus/dbus-sysdeps-win.c | 29 |
2 files changed, 25 insertions, 8 deletions
diff --git a/dbus/dbus-internals.c b/dbus/dbus-internals.c index 57b8cea7..ab498b15 100644 --- a/dbus/dbus-internals.c +++ b/dbus/dbus-internals.c @@ -475,9 +475,9 @@ _dbus_verbose_real ( out: if (message == NULL) { - OutputDebugStringA ("Out of memory while formatting verbose message: '"); + OutputDebugStringA ("Out of memory while formatting verbose message: '''"); OutputDebugStringA (format); - OutputDebugStringA ("'"); + OutputDebugStringA ("'''"); } else { diff --git a/dbus/dbus-sysdeps-win.c b/dbus/dbus-sysdeps-win.c index de7d4d59..318bd360 100644 --- a/dbus/dbus-sysdeps-win.c +++ b/dbus/dbus-sysdeps-win.c @@ -3848,14 +3848,31 @@ _dbus_logv (DBusSystemLogSeverity severity, if (log_flags & DBUS_LOG_FLAGS_SYSTEM_LOG) { - char buf[1024]; - char format[1024]; - + DBusString out = _DBUS_STRING_INIT_INVALID; + const char *message = NULL; DBUS_VA_COPY (tmp, args); - snprintf (format, sizeof (format), "%s: %s", s, msg); - vsnprintf(buf, sizeof(buf), format, tmp); - OutputDebugStringA(buf); + + if (!_dbus_string_init (&out)) + goto out; + if (!_dbus_string_append_printf (&out, "%s: ", s)) + goto out; + if (!_dbus_string_append_printf_valist (&out, msg, tmp)) + goto out; + message = _dbus_string_get_const_data (&out); +out: + if (message != NULL) + { + OutputDebugStringA (message); + } + else + { + OutputDebugStringA ("Out of memory while formatting message: '''"); + OutputDebugStringA (msg); + OutputDebugStringA ("'''"); + } + va_end (tmp); + _dbus_string_free (&out); } if (log_flags & DBUS_LOG_FLAGS_STDERR) |