![]() |
|
Message-ID: <trinity-b95d35ca-723c-4b6a-bd79-1edbb37dea1f-1718279080124@3c-app-gmx-bap17> Date: Thu, 13 Jun 2024 13:44:40 +0200 From: erny hombre <hombre67@....at> To: musl@...ts.openwall.com Subject: possible bug in syslog Hello, I think there is a bug in syslog: This assert fails (in gcc the test is ok): #if (LOG_MAKEPRI(LOG_DAEMON, LOG_WARNING) != (LOG_DAEMON|LOG_WARNING)) #error "LOG_MAKEPRI" #endif This code should produce a log message, but actually it does not: setlogmask(LOG_UPTO(LOG_NOTICE)); syslog(LOG_MAKEPRI(LOG_LOCAL7, LOG_NOTICE), "LOG_MAKEPRI(LOG_LOCAL7, LOG_NOTICE)"); This works: syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_NOTICE), "LOG_MAKEPRI(LOG_DAEMON, LOG_NOTICE)"); --- Maybe these macros in syslog.h are wrong: #define LOG_MAKEPRI(f, p) (((f)<<3)|(p)) #define LOG_FACMASK 0x3f8 #define LOG_FAC(p) (((p)&LOG_FACMASK)>>3) correct version: #define LOG_MAKEPRI(f, p) (((f))|(p)) #define LOG_FACMASK 0xf8 #define LOG_FAC(p) (((p)&LOG_FACMASK)) Also a line in syslog.c, __vsyslog() should be changed from: if (!(log_mask & LOG_MASK(priority&7)) || (priority&~0x3ff)) return; to: if (!(log_mask & LOG_MASK(priority&7)) || (priority&~0xff)) return; ---- This is my testprogram to reproduce the error: #include <syslog.h> int main(void) { #if 1 // test ok #if (LOG_FAC(LOG_MAKEPRI(LOG_DAEMON, LOG_WARNING)) != LOG_DAEMON) #error "LOG_FAC" #endif #if 0 // test fails #if (LOG_MAKEPRI(LOG_DAEMON, LOG_WARNING) != (LOG_DAEMON|LOG_WARNING)) #error "LOG_MAKEPRI" #endif #endif setlogmask(LOG_UPTO(LOG_NOTICE)); openlog("exampleprog", LOG_CONS | LOG_PID | LOG_NDELAY | LOG_PERROR, LOG_LOCAL1); syslog(LOG_DAEMON | LOG_NOTICE, "LOG_DAEMON | LOG_NOTICE"); syslog(LOG_LOCAL7 | LOG_NOTICE, "LOG_LOCAL7 | LOG_NOTICE"); syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_NOTICE), "LOG_MAKEPRI(LOG_DAEMON, LOG_NOTICE)"); // the following call does not write a log message: syslog(LOG_MAKEPRI(LOG_LOCAL7, LOG_NOTICE), "LOG_MAKEPRI(LOG_LOCAL7, LOG_NOTICE)"); closelog(); return 0; } ---- Regards Erwin
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.