|
@@ -129,7 +129,7 @@ static const struct sockaddr SyslogAddr = {
|
|
|
static void
|
|
|
closelog_intern(int sig)
|
|
|
{
|
|
|
- __UCLIBC_MUTEX_LOCK(mylock);
|
|
|
+
|
|
|
if (LogFile != -1) {
|
|
|
(void) close(LogFile);
|
|
|
}
|
|
@@ -141,7 +141,6 @@ closelog_intern(int sig)
|
|
|
LogFacility = LOG_USER;
|
|
|
LogMask = 0xff;
|
|
|
}
|
|
|
- __UCLIBC_MUTEX_UNLOCK(mylock);
|
|
|
}
|
|
|
|
|
|
|
|
@@ -205,12 +204,14 @@ vsyslog(int pri, const char *fmt, va_list ap)
|
|
|
int rc;
|
|
|
char tbuf[1024];
|
|
|
struct sigaction action, oldaction;
|
|
|
- int sigpipe;
|
|
|
|
|
|
memset(&action, 0, sizeof(action));
|
|
|
action.sa_handler = closelog_intern;
|
|
|
sigemptyset(&action.sa_mask);
|
|
|
- sigpipe = sigaction(SIGPIPE, &action, &oldaction);
|
|
|
+
|
|
|
+ * EFAULT (bad address of &oldaction) and EINVAL (invalid signo)
|
|
|
+ * none of which can happen here. */
|
|
|
+ sigaction(SIGPIPE, &action, &oldaction);
|
|
|
|
|
|
saved_errno = errno;
|
|
|
|
|
@@ -306,7 +307,7 @@ vsyslog(int pri, const char *fmt, va_list ap)
|
|
|
|
|
|
|
|
|
if ((LogStat & LOG_CONS) &&
|
|
|
- (fd = open(_PATH_CONSOLE, O_WRONLY)) >= 0) {
|
|
|
+ (fd = open(_PATH_CONSOLE, O_WRONLY | O_NOCTTY)) >= 0) {
|
|
|
p = strchr(tbuf, '>') + 1;
|
|
|
last_chr[0] = '\r';
|
|
|
last_chr[1] = '\n';
|
|
@@ -316,7 +317,7 @@ vsyslog(int pri, const char *fmt, va_list ap)
|
|
|
|
|
|
getout:
|
|
|
__UCLIBC_MUTEX_UNLOCK(mylock);
|
|
|
- if (sigpipe == 0)
|
|
|
+
|
|
|
sigaction(SIGPIPE, &oldaction, (struct sigaction *) NULL);
|
|
|
}
|
|
|
libc_hidden_def(vsyslog)
|
|
@@ -338,7 +339,9 @@ libc_hidden_def(syslog)
|
|
|
void
|
|
|
closelog(void)
|
|
|
{
|
|
|
+ __UCLIBC_MUTEX_LOCK(mylock);
|
|
|
closelog_intern(0);
|
|
|
+ __UCLIBC_MUTEX_UNLOCK(mylock);
|
|
|
}
|
|
|
libc_hidden_def(closelog)
|
|
|
|
|
@@ -348,9 +351,10 @@ int setlogmask(int pmask)
|
|
|
int omask;
|
|
|
|
|
|
omask = LogMask;
|
|
|
- __UCLIBC_MUTEX_LOCK(mylock);
|
|
|
- if (pmask != 0)
|
|
|
+ if (pmask != 0) {
|
|
|
+ __UCLIBC_MUTEX_LOCK(mylock);
|
|
|
LogMask = pmask;
|
|
|
- __UCLIBC_MUTEX_UNLOCK(mylock);
|
|
|
+ __UCLIBC_MUTEX_UNLOCK(mylock);
|
|
|
+ }
|
|
|
return omask;
|
|
|
}
|