From patchwork Thu Apr 13 14:16:42 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Florian Weimer X-Patchwork-Id: 20034 Received: (qmail 87761 invoked by alias); 13 Apr 2017 14:16:45 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Delivered-To: mailing list libc-alpha@sourceware.org Received: (qmail 87746 invoked by uid 89); 13 Apr 2017 14:16:44 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-25.9 required=5.0 tests=BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, KAM_LAZY_DOMAIN_SECURITY, RP_MATCHES_RCVD, SPF_HELO_PASS autolearn=ham version=3.3.2 spammy=csu, 349 X-HELO: mx1.redhat.com DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com B5B7B31F41E Authentication-Results: ext-mx05.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx05.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=fweimer@redhat.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com B5B7B31F41E Date: Thu, 13 Apr 2017 16:16:42 +0200 To: libc-alpha@sourceware.org Subject: [PATCH] Assume that O_NOFOLLOW is always defined User-Agent: Heirloom mailx 12.5 7/5/10 MIME-Version: 1.0 Message-Id: <20170413141642.87B5E401B4727@oldenburg.str.redhat.com> From: fweimer@redhat.com (Florian Weimer) 2017-04-13 Florian Weimer * csu/check_fds.c (__libc_check_standard_fds): Assume O_NOFOLLOW is defined. * elf/rtld.c (process_envvars): Likewise. * sysdeps/posix/shm_open.c (shm_open): Likewise. * elf/dl-profile.c (EXTRA_FLAGS): Remove definition. Use O_NOFOLLOW directly. * gmon/gmon.c (O_NOFOLLOW): Remove definition. diff --git a/csu/check_fds.c b/csu/check_fds.c index bec2a53..4b4eb81 100644 --- a/csu/check_fds.c +++ b/csu/check_fds.c @@ -87,14 +87,10 @@ check_one_fd (int fd, int mode) void __libc_check_standard_fds (void) { - /* This is really paranoid but some people actually are. If /dev/null - should happen to be a symlink to somewhere else and not the device - commonly known as "/dev/null" we bail out. We can detect this with - the O_NOFOLLOW flag for open() but only on some system. */ -#ifndef O_NOFOLLOW -# define O_NOFOLLOW 0 -#endif - /* Check all three standard file descriptors. */ + /* Check all three standard file descriptors. The O_NOFOLLOW flag + really paranoid but some people actually are. If /dev/null + should happen to be a symlink to somewhere else and not the + device commonly known as "/dev/null" we bail out. */ check_one_fd (STDIN_FILENO, O_WRONLY | O_NOFOLLOW); check_one_fd (STDOUT_FILENO, O_RDONLY | O_NOFOLLOW); check_one_fd (STDERR_FILENO, O_RDONLY | O_NOFOLLOW); diff --git a/elf/dl-profile.c b/elf/dl-profile.c index 01aaf31..a4f1108 100644 --- a/elf/dl-profile.c +++ b/elf/dl-profile.c @@ -325,12 +325,7 @@ _dl_start_profile (void) *cp++ = '/'; __stpcpy (__stpcpy (cp, GLRO(dl_profile)), ".profile"); -#ifdef O_NOFOLLOW -# define EXTRA_FLAGS | O_NOFOLLOW -#else -# define EXTRA_FLAGS -#endif - fd = __open (filename, O_RDWR | O_CREAT EXTRA_FLAGS, DEFFILEMODE); + fd = __open (filename, O_RDWR | O_CREAT | O_NOFOLLOW, DEFFILEMODE); if (fd == -1) { char buf[400]; diff --git a/elf/rtld.c b/elf/rtld.c index 5986eaf..319ef06 100644 --- a/elf/rtld.c +++ b/elf/rtld.c @@ -2525,11 +2525,7 @@ process_envvars (enum mode *modep) messages to this file. */ else if (any_debug && debug_output != NULL) { -#ifdef O_NOFOLLOW const int flags = O_WRONLY | O_APPEND | O_CREAT | O_NOFOLLOW; -#else - const int flags = O_WRONLY | O_APPEND | O_CREAT; -#endif size_t name_len = strlen (debug_output); char buf[name_len + 12]; char *startp; diff --git a/gmon/gmon.c b/gmon/gmon.c index e9988c0..f394a78 100644 --- a/gmon/gmon.c +++ b/gmon/gmon.c @@ -336,10 +336,6 @@ write_gmon (void) int fd = -1; char *env; -#ifndef O_NOFOLLOW -# define O_NOFOLLOW 0 -#endif - env = getenv ("GMON_OUT_PREFIX"); if (env != NULL && !__libc_enable_secure) { diff --git a/sysdeps/posix/shm_open.c b/sysdeps/posix/shm_open.c index aac0da4..56a9965 100644 --- a/sysdeps/posix/shm_open.c +++ b/sysdeps/posix/shm_open.c @@ -34,9 +34,7 @@ shm_open (const char *name, int oflag, mode_t mode) { SHM_GET_NAME (EINVAL, -1, ""); -# ifdef O_NOFOLLOW oflag |= O_NOFOLLOW; -# endif # ifdef O_CLOEXEC oflag |= O_CLOEXEC; # endif