diff options
author | Florian Weimer <fweimer@redhat.com> | 2017-04-18 14:56:51 +0200 |
---|---|---|
committer | Florian Weimer <fweimer@redhat.com> | 2017-04-18 14:56:51 +0200 |
commit | cef9b65376a044309f74b77860ccf3c48a4ae315 (patch) | |
tree | c934a9b57903468b9a2754c1cf8f99f2a94c9269 /nss | |
parent | b48061e1a534a2421c65e4258418d41a5335ba32 (diff) | |
download | glibc-cef9b65376a044309f74b77860ccf3c48a4ae315.tar.gz |
Assume that O_CLOEXEC is always defined and works
Diffstat (limited to 'nss')
-rw-r--r-- | nss/Makefile | 2 | ||||
-rw-r--r-- | nss/nss_db/db-open.c | 6 | ||||
-rw-r--r-- | nss/nss_files/files-XXX.c | 35 | ||||
-rw-r--r-- | nss/nss_files/files-alias.c | 35 | ||||
-rw-r--r-- | nss/nss_files/files-have_o_cloexec.c | 23 |
5 files changed, 2 insertions, 99 deletions
diff --git a/nss/Makefile b/nss/Makefile index de6c47a1db..fa0418e249 100644 --- a/nss/Makefile +++ b/nss/Makefile @@ -74,7 +74,7 @@ vpath %.c $(subdir-dirs) ../locale/programs ../intl libnss_files-routines := $(addprefix files-,$(databases)) \ - files-initgroups files-have_o_cloexec files-init + files-initgroups files-init libnss_db-dbs := $(addprefix db-,\ $(filter-out hosts network key alias,\ diff --git a/nss/nss_db/db-open.c b/nss/nss_db/db-open.c index 42ce00fe3b..1c58bd1c54 100644 --- a/nss/nss_db/db-open.c +++ b/nss/nss_db/db-open.c @@ -36,11 +36,7 @@ internal_setent (const char *file, struct nss_db_map *mapping) { enum nss_status status = NSS_STATUS_UNAVAIL; - int mode = O_RDONLY | O_LARGEFILE; -#ifdef O_CLOEXEC - mode |= O_CLOEXEC; -#endif - int fd = open_not_cancel_2 (file, mode); + int fd = open_not_cancel_2 (file, O_RDONLY | O_LARGEFILE | O_CLOEXEC); if (fd != -1) { struct nss_db_header header; diff --git a/nss/nss_files/files-XXX.c b/nss/nss_files/files-XXX.c index dbd38a346a..265331ef21 100644 --- a/nss/nss_files/files-XXX.c +++ b/nss/nss_files/files-XXX.c @@ -78,41 +78,6 @@ internal_setent (FILE **stream) if (*stream == NULL) status = errno == EAGAIN ? NSS_STATUS_TRYAGAIN : NSS_STATUS_UNAVAIL; - else - { -#if !defined O_CLOEXEC || !defined __ASSUME_O_CLOEXEC -# ifdef O_CLOEXEC - if (__have_o_cloexec <= 0) -# endif - { - /* We have to make sure the file is `closed on exec'. */ - int result; - int flags; - - result = flags = fcntl (fileno (*stream), F_GETFD, 0); - if (result >= 0) - { -# ifdef O_CLOEXEC - if (__have_o_cloexec == 0) - __have_o_cloexec = (flags & FD_CLOEXEC) == 0 ? -1 : 1; - if (__have_o_cloexec < 0) -# endif - { - flags |= FD_CLOEXEC; - result = fcntl (fileno (*stream), F_SETFD, flags); - } - } - if (result < 0) - { - /* Something went wrong. Close the stream and return a - failure. */ - fclose (*stream); - *stream = NULL; - status = NSS_STATUS_UNAVAIL; - } - } -#endif - } } else rewind (*stream); diff --git a/nss/nss_files/files-alias.c b/nss/nss_files/files-alias.c index de4e36499e..cf872bb603 100644 --- a/nss/nss_files/files-alias.c +++ b/nss/nss_files/files-alias.c @@ -51,41 +51,6 @@ internal_setent (FILE **stream) if (*stream == NULL) status = errno == EAGAIN ? NSS_STATUS_TRYAGAIN : NSS_STATUS_UNAVAIL; - else - { -#if !defined O_CLOEXEC || !defined __ASSUME_O_CLOEXEC -# ifdef O_CLOEXEC - if (__have_o_cloexec <= 0) -# endif - { - /* We have to make sure the file is `closed on exec'. */ - int result; - int flags; - - result = flags = fcntl (fileno (*stream), F_GETFD, 0); - if (result >= 0) - { -# ifdef O_CLOEXEC - if (__have_o_cloexec == 0) - __have_o_cloexec = (flags & FD_CLOEXEC) == 0 ? -1 : 1; - if (__have_o_cloexec < 0) -# endif - { - flags |= FD_CLOEXEC; - result = fcntl (fileno (*stream), F_SETFD, flags); - } - } - if (result < 0) - { - /* Something went wrong. Close the stream and return a - failure. */ - fclose (*stream); - stream = NULL; - status = NSS_STATUS_UNAVAIL; - } - } -#endif - } } else rewind (*stream); diff --git a/nss/nss_files/files-have_o_cloexec.c b/nss/nss_files/files-have_o_cloexec.c deleted file mode 100644 index 295ecccb77..0000000000 --- a/nss/nss_files/files-have_o_cloexec.c +++ /dev/null @@ -1,23 +0,0 @@ -/* Copyright (C) 2007-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <fcntl.h> -#include <kernel-features.h> - -#if defined O_CLOEXEC && !defined __ASSUME_O_CLOEXEC -int __have_o_cloexec; -#endif |