Use args list only once. Probably better to use an intermediate buffer anyway.
[guacd.git] / src / log.c
index bfd55db..1cdaed0 100644 (file)
--- a/src/log.c
+++ b/src/log.c
 
 void vguacd_log_info(const char* format, va_list args) {
 
+    /* Copy log message into buffer */
+    char message[2048];
+    vsnprintf(message, sizeof(message), format, args);
+
     /* Log to syslog */
-    vsyslog(LOG_INFO, format, args);
+    syslog(LOG_INFO, "%s", message);
 
     /* Log to STDERR */
-    fprintf(stderr, "guacd[%i]: INFO:  ", getpid());
-    vfprintf(stderr, format, args);
-    fprintf(stderr, "\n");
+    fprintf(stderr, "guacd[%i]: INFO:  %s\n", getpid(), message);
 
 }
 
 void vguacd_log_error(const char* format, va_list args) {
 
+    /* Copy log message into buffer */
+    char message[2048];
+    vsnprintf(message, sizeof(message), format, args);
+
     /* Log to syslog */
-    vsyslog(LOG_ERR, format, args);
+    syslog(LOG_ERR, "%s", message);
 
     /* Log to STDERR */
-    fprintf(stderr, "guacd[%i]: ERROR: ", getpid());
-    vfprintf(stderr, format, args);
-    fprintf(stderr, "\n");
+    fprintf(stderr, "guacd[%i]: ERROR: %s\n", getpid(), message);
 
 }