mirror of
https://sourceware.org/git/glibc.git
synced 2025-07-28 00:21:52 +03:00
Assume that SOCK_CLOEXEC is available and works
This fixes (harmless) data races when accessing the various __have_sock_cloexec variables.
This commit is contained in:
@ -346,36 +346,9 @@ openlog_internal(const char *ident, int logstat, int logfac)
|
||||
(void)strncpy(SyslogAddr.sun_path, _PATH_LOG,
|
||||
sizeof(SyslogAddr.sun_path));
|
||||
if (LogStat & LOG_NDELAY) {
|
||||
#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)
|
||||
? 1 : -1);
|
||||
}
|
||||
# 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;
|
||||
#ifndef __ASSUME_SOCK_CLOEXEC
|
||||
# ifdef SOCK_CLOEXEC
|
||||
if (__have_sock_cloexec < 0)
|
||||
# endif
|
||||
__fcntl(LogFile, F_SETFD, FD_CLOEXEC);
|
||||
#endif
|
||||
LogFile = __socket(AF_UNIX, LogType | SOCK_CLOEXEC, 0);
|
||||
if (LogFile == -1)
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (LogFile != -1 && !connected)
|
||||
|
Reference in New Issue
Block a user