mailing list of musl libc
 help / color / mirror / code / Atom feed
* [musl] possible bug in syslog
@ 2024-06-13 11:44 erny hombre
  2024-06-13 13:46 ` Rich Felker
  0 siblings, 1 reply; 5+ messages in thread
From: erny hombre @ 2024-06-13 11:44 UTC (permalink / raw)
  To: musl

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


^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2024-06-13 15:52 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-06-13 11:44 [musl] possible bug in syslog erny hombre
2024-06-13 13:46 ` Rich Felker
2024-06-13 15:20   ` Thorsten Glaser
2024-06-13 15:37     ` Rich Felker
2024-06-13 15:44       ` Thorsten Glaser

Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/musl/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).