[PATCH] syslogd: Fix 'OPT_locallog' check regression in 'syslogd_main'.
Grant Erickson
gerickson at nuovations.com
Wed Apr 2 03:16:26 UTC 2025
In the recent refactoring of 'syslogd_main', a regression was
introduced in handling the manual bitwise OR of 'OPT_locallog' as
follows:
if (ENABLE_FEATURE_REMOTE_LOG && !(opts & OPT_remotelog)) // -R
option_mask32 |= OPT_locallog;
'opts' represents the locally-scoped output of 'getopt32' and
'option_mask32' represents the globally-scoped state of the
same. Consequently, the above performs a bitwise OR to include
'OPT_locallog' of the globally-scoped option state, which 'opts' will
not reflect locally.
Manipulating the global, rather than local, state is correct as
'timestamp_and_log_internal' will later need to check 'OPT_locallog'.
However, when the aforementioned refactor occurred, the following
regressing change was made:
- if (!ENABLE_FEATURE_REMOTE_LOG || (option_mask32 & OPT_locallog)) {
+ if (!ENABLE_FEATURE_REMOTE_LOG || (opts & OPT_locallog)) {
breaking the spatially- and temporally-removed check in
'timestamp_and_log_internal'.
This returns the check in 'syslogd_main' to using the global
'option_mask32' state.
Fixes: 02378ce20c6d2 ("syslogd: decrease stack usage, ~50 bytes”)
Signed-off-by: Grant Erickson <gerickson at nuovations.com>
---
sysklogd/syslogd.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/sysklogd/syslogd.c b/sysklogd/syslogd.c
index 7558051f0e7f..fa03aa28093b 100644
--- a/sysklogd/syslogd.c
+++ b/sysklogd/syslogd.c
@@ -1179,7 +1179,7 @@ int syslogd_main(int argc UNUSED_PARAM, char **argv)
}
}
#endif
- if (!ENABLE_FEATURE_REMOTE_LOG || (opts & OPT_locallog)) {
+ if (!ENABLE_FEATURE_REMOTE_LOG || (option_mask32 & OPT_locallog)) {
recvbuf[sz] = '\0'; /* ensure it *is* NUL terminated */
split_escape_and_log(recvbuf, sz);
}
--
2.45.0
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-syslogd-Fix-OPT_locallog-check-regression-in-syslogd.patch
Type: application/octet-stream
Size: 2040 bytes
Desc: not available
URL: <http://lists.busybox.net/pipermail/busybox/attachments/20250401/495431ca/attachment.obj>
More information about the busybox
mailing list