]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
logger.c: Automatically add a newline to formats that don't have one
authorGeorge Joseph <gjoseph@digium.com>
Thu, 10 Dec 2020 15:09:52 +0000 (08:09 -0700)
committerGeorge Joseph <gjoseph@digium.com>
Thu, 17 Dec 2020 15:12:46 +0000 (09:12 -0600)
Scope tracing allows you to not specify a format string or variable,
in which case it just prints the indent, file, function, and line
number.  The trace output automatically adds a newline to the end
in this case.  If you also have debugging turned on for the module,
a debug message is also printed but the standard log functionality
which prints it doesn't add the newline so you have messages
that don't break correctly.

 * format_log_message_ap(), which is the common log
   message formatter for all channels, now adds a
   newline to the end of format strings that don't
   already have a newline.

ASTERISK-29209
Reported by: Alexander Traud

Change-Id: I994a7df27f88df343b7d19f3e81a4b562d9d41da

main/logger.c

index 067f9a99191e484b68e76ff6a07e1e2f542a65ef..5562bf37eb6a21a8b4d8bb7f22556feded9d52ad 100644 (file)
@@ -1672,6 +1672,11 @@ static struct logmsg * __attribute__((format(printf, 7, 0))) format_log_message_
                return NULL;
        }
 
+       /* Automatically add a newline to format strings that don't have one */
+       if (!ast_ends_with(ast_str_buffer(buf), "\n")) {
+               ast_str_append(&buf, 0, "\n");
+       }
+
        /* Create a new logging message */
        if (!(logmsg = ast_calloc_with_stringfields(1, struct logmsg, res + 128))) {
                return NULL;