* misc/syslog.c (openlog_internal): Use SOCK_CLOEXEC if possible.

This commit is contained in:
Ulrich Drepper 2008-07-26 22:55:08 +00:00
parent 72112b0cb4
commit c0216dfc62
2 changed files with 30 additions and 3 deletions

View File

@ -1,5 +1,7 @@
2008-07-26 Ulrich Drepper <drepper@redhat.com>
* misc/syslog.c (openlog_internal): Use SOCK_CLOEXEC if possible.
* malloc/mtrace.c (mtrace): Use 'e' flag in fopen call. Drop
F_SETFD use if we know fopen set the flag.

View File

@ -348,10 +348,35 @@ openlog_internal(const char *ident, int logstat, int logfac)
(void)strncpy(SyslogAddr.sun_path, _PATH_LOG,
sizeof(SyslogAddr.sun_path));
if (LogStat & LOG_NDELAY) {
if ((LogFile = __socket(AF_UNIX, LogType, 0))
== -1)
#ifdef SOCK_CLOEXEC
# ifndef __ASSUME_SOCK_CLOEXEC
if (__have_sock_cloexec >= 0) {
# endif
LogFile = __socket(AF_UNIX,
LogType
| SOCK_CLOEXEC, 0);
# ifndef __ASSUME_SOCK_CLOEXEC
if (__have_sock_cloexec == 0)
__have_sock_cloexec
= (LogFile != -1
|| errno != EINVAL);
#endif
}
#endif
#ifndef __ASSUME_SOCK_CLOEXEC
# ifdef SOCK_CLOEXEC
if (__have_sock_cloexec < 0)
# endif
LogFile = __socket(AF_UNIX, LogType, 0);
#endif
if (LogFile == -1)
return;
(void)__fcntl(LogFile, F_SETFD, 1);
#ifndef __ASSUME_SOCK_CLOEXEC
# ifdef SOCK_CLOEXEC
if (__have_sock_cloexec < 0)
# endif
__fcntl(LogFile, F_SETFD, FD_CLOEXEC);
#endif
}
}
if (LogFile != -1 && !connected)