[sysprof: 39/63] libsysprof-capture: Use vsnprintf() instead of g_strdup_printf()



commit 43530e361339fd894d06a8367b0285d12ef2cf08
Author: Philip Withnall <withnall endlessm com>
Date:   Thu Jul 2 12:20:01 2020 +0100

    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

 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 c00765b..d36b7f4 100644
--- a/src/libsysprof-capture/sysprof-collector.c
+++ b/src/libsysprof-capture/sysprof-collector.c
@@ -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)


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]