logger.c: Automatically add a newline to formats that don't have one

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
This commit is contained in:
George Joseph 2020-12-10 08:09:52 -07:00
parent 11def974a8
commit 5a2867efa9
1 changed files with 5 additions and 0 deletions

View 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;