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 <withnall@endlessm.com>

Helps: #40
This commit is contained in:
Philip Withnall
2020-07-02 12:20:01 +01:00
parent f5cf12ae40
commit 43530e3613

View File

@ -65,7 +65,9 @@
#ifdef __linux__
# include <sched.h>
#endif
#include <stdarg.h>
#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/syscall.h>
@ -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)