]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
lib: Avoid memcpy in debug_systemd_log()
authorVolker Lendecke <vl@samba.org>
Tue, 19 Dec 2023 13:44:12 +0000 (14:44 +0100)
committerVolker Lendecke <vl@samba.org>
Thu, 4 Jan 2024 16:03:36 +0000 (16:03 +0000)
sd_journal_send() understands the %.*s format.

Signed-off-by: Volker Lendecke <vl@samba.org>
Reviewed-by: Stefan Metzmacher <metze@samba.org>
lib/util/debug.c

index f1f91ebe7a797f718c99154982bba0dbc4de7931..0dd8e2e954b297ad740136597b5d6554adb5f58e 100644 (file)
@@ -366,24 +366,33 @@ static void debug_syslog_log(int msg_level, const char *msg, size_t msg_len)
 static void debug_systemd_log(int msg_level, const char *msg, size_t msg_len)
 {
        if (state.hs_len > 0) {
-               ensure_copy_no_nl(state.header_str_no_nl,
-                                 sizeof(state.header_str_no_nl),
-                                 state.header_str,
-                                 state.hs_len);
-               sd_journal_send("MESSAGE=%s",
-                               state.header_str_no_nl,
+               size_t len = state.hs_len;
+
+               if (state.header_str[len - 1] == '\n') {
+                       len -= 1;
+               }
+
+               sd_journal_send("MESSAGE=%.*s",
+                               (int)len,
+                               state.header_str,
                                "PRIORITY=%d",
                                debug_level_to_priority(msg_level),
                                "LEVEL=%d",
                                msg_level,
                                NULL);
        }
-       ensure_copy_no_nl(state.msg_no_nl,
-                         sizeof(state.msg_no_nl),
-                         msg, msg_len);
-       sd_journal_send("MESSAGE=%s", state.msg_no_nl,
-                       "PRIORITY=%d", debug_level_to_priority(msg_level),
-                       "LEVEL=%d", msg_level,
+
+       if ((msg_len > 0) && (msg[msg_len - 1] == '\n')) {
+               msg_len -= 1;
+       }
+
+       sd_journal_send("MESSAGE=%.*s",
+                       (int)msg_len,
+                       msg,
+                       "PRIORITY=%d",
+                       debug_level_to_priority(msg_level),
+                       "LEVEL=%d",
+                       msg_level,
                        NULL);
 }
 #endif