summaryrefslogtreecommitdiff
path: root/dbus
diff options
context:
space:
mode:
authorRalf Habacker <ralf.habacker@freenet.de>2020-04-27 12:01:30 +0000
committerRalf Habacker <ralf.habacker@freenet.de>2020-04-27 12:01:30 +0000
commit062f62a3de21658aa0a010269f549deb2b86a2ea (patch)
treec8eb44630d8f4a9b530b6f06204f2889612c468f /dbus
parentda0db314a3c3fca7290ca0263e1ed0954ad9a90d (diff)
parente3075c3cfa98bd5addd6b4831a476fa488960a83 (diff)
downloaddbus-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.c4
-rw-r--r--dbus/dbus-sysdeps-win.c29
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)