From 9cd8b76f737d59a70f758c7446868ae1c171b5b9 Mon Sep 17 00:00:00 2001 From: Ralph Boehme Date: Tue, 30 Jun 2020 17:02:07 +0200 Subject: [PATCH 1/2] lib/debug: assert file backend The debug file backend is a built-in default, if it's missing we're totally screwed. BUG: https://bugzilla.samba.org/show_bug.cgi?id=14426 Signed-off-by: Ralph Boehme Reviewed-by: Andreas Schneider (cherry picked from commit 5aeaa6959da326095e98f0369b6d91dc5667415e) --- lib/util/debug.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/lib/util/debug.c b/lib/util/debug.c index d990a6bf2b0..864adbeeec4 100644 --- a/lib/util/debug.c +++ b/lib/util/debug.c @@ -30,6 +30,7 @@ #include "util_strlist.h" /* LIST_SEP */ #include "blocking.h" #include "debug.h" +#include /* define what facility to use for syslog */ #ifndef SYSLOG_FACILITY @@ -1113,6 +1114,7 @@ static bool reopen_one_log(int *fd, const char *logfile) */ bool reopen_logs_internal(void) { + struct debug_backend *b = NULL; mode_t oldumask; int new_fd = 0; size_t i; @@ -1140,15 +1142,13 @@ bool reopen_logs_internal(void) dbgc_config[DBGC_ALL].fd = 2; return true; - case DEBUG_FILE: { - struct debug_backend *b = debug_find_backend("file"); + case DEBUG_FILE: + b = debug_find_backend("file"); + assert(b != NULL); - if (b != NULL) { - b->log_level = dbgc_config[DBGC_ALL].loglevel; - } + b->log_level = dbgc_config[DBGC_ALL].loglevel; break; } - } oldumask = umask( 022 ); -- 2.26.2 From e37b266ba903ee79095a692f63e7884de2481e92 Mon Sep 17 00:00:00 2001 From: Ralph Boehme Date: Tue, 30 Jun 2020 17:03:05 +0200 Subject: [PATCH 2/2] lib/debug: set the correct default backend loglevel to MAX_DEBUG_LEVEL This fixed a regression introduced by commit c83ce5f4f99aef94530411ec82cc03e9935b352d for bug #14345. The backend loglevel globally restricts logging of a particular backend. If this value is smaller then any explicitly configured logging class, logging for this class is skipped. Eg, given the following logging config in smb.conf: log level = 1 auth_json_audit:3@/var/log/samba/samba_auth_audit.log the default class loglevel of 1 (dbgc_config[DBGC_ALL].loglevel) will be assigned to the backend loglevel. So even though the logging class auth_json_audit is configured at level 3, this doesn't become effective as the file backend drops all log messages with a level below 1. BUG: https://bugzilla.samba.org/show_bug.cgi?id=14426 Signed-off-by: Ralph Boehme Reviewed-by: Andreas Schneider Autobuild-User(master): Andreas Schneider Autobuild-Date(master): Thu Jul 2 13:25:29 UTC 2020 on sn-devel-184 (cherry picked from commit 71488b812fe737df2d3439a6ff3f95bb69b4a5bd) --- lib/util/debug.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/util/debug.c b/lib/util/debug.c index 864adbeeec4..1650551a766 100644 --- a/lib/util/debug.c +++ b/lib/util/debug.c @@ -1146,7 +1146,7 @@ bool reopen_logs_internal(void) b = debug_find_backend("file"); assert(b != NULL); - b->log_level = dbgc_config[DBGC_ALL].loglevel; + b->log_level = MAX_DEBUG_LEVEL; break; } -- 2.26.2