[git commit prelink 1/1] syslog: fix 'everyone logs with user facility'

Roman I Khimov khimov at altell.ru
Tue Jan 25 11:52:31 UTC 2011


commit: http://git.uclibc.org/uClibc/commit/?id=8fdc17c2ba1322712604d88dca48157068e6aadb
branch: http://git.uclibc.org/uClibc/commit/?id=refs/heads/prelink

It's been found that on uclibc-based system most of the programs log with
'user' facility despite the calls to openlog() with other facilities explicitly
set. Most but not all. Investigating that I've found that the ones logging with
proper facilities used LOG_NDELAY in openlog(). The problem is that LogFacility
is overwritten in openlog_intern and LOG_USER is passed to it from vsyslog() no
matter what the program set with openlog().

Signed-off-by: Roman I Khimov <khimov at altell.ru>
Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop at gmail.com>
---
 libc/misc/syslog/syslog.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/libc/misc/syslog/syslog.c b/libc/misc/syslog/syslog.c
index b10a556..f1b848f 100644
--- a/libc/misc/syslog/syslog.c
+++ b/libc/misc/syslog/syslog.c
@@ -205,7 +205,7 @@ vsyslog(int pri, const char *fmt, va_list ap)
 	if ((LogMask & LOG_MASK(LOG_PRI(pri))) == 0)
 		goto getout;
 	if (LogFile < 0 || !connected)
-		openlog_intern(NULL, LogStat | LOG_NDELAY, LOG_USER);
+		openlog_intern(NULL, LogStat | LOG_NDELAY, (int)LogFacility << 3);
 
 	/* Set default facility if none specified. */
 	if ((pri & LOG_FACMASK) == 0)
-- 
1.7.3.4



More information about the uClibc-cvs mailing list