From 43530e361339fd894d06a8367b0285d12ef2cf08 Mon Sep 17 00:00:00 2001 From: Philip Withnall Date: Thu, 2 Jul 2020 12:20:01 +0100 Subject: [PATCH] libsysprof-capture: Use vsnprintf() instead of g_strdup_printf() This imposes an arbitrary limit of 2048B on the length of printf-ed log messages, but is otherwise equivalent. Signed-off-by: Philip Withnall Helps: #40 --- src/libsysprof-capture/sysprof-collector.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/libsysprof-capture/sysprof-collector.c b/src/libsysprof-capture/sysprof-collector.c index c00765b3..d36b7f47 100644 --- a/src/libsysprof-capture/sysprof-collector.c +++ b/src/libsysprof-capture/sysprof-collector.c @@ -65,7 +65,9 @@ #ifdef __linux__ # include #endif +#include #include +#include #include #include #include @@ -466,14 +468,14 @@ sysprof_collector_log_printf (int severity, ...) { COLLECTOR_BEGIN { - g_autofree char *formatted = NULL; + char formatted[2048]; SysprofCaptureLog *ev; va_list args; size_t len; size_t sl; va_start (args, format); - formatted = g_strdup_vprintf (format, args); + vsnprintf (formatted, sizeof (formatted), format, args); va_end (args); if (domain == NULL)