diff options
author | Ulrich Drepper <drepper@gmail.com> | 2011-09-05 17:18:38 -0400 |
---|---|---|
committer | Ulrich Drepper <drepper@gmail.com> | 2011-09-05 17:18:38 -0400 |
commit | 554881ef206db3e749602309fdb6b191e7ed09b4 (patch) | |
tree | d3dec576ad323401fe716e1dbc6b80ee8520b871 | |
parent | b0fc1ff04ee0775dbe1b5d6d4a2c87e2d7decb06 (diff) | |
download | glibc-554881ef206db3e749602309fdb6b191e7ed09b4.zip glibc-554881ef206db3e749602309fdb6b191e7ed09b4.tar.gz glibc-554881ef206db3e749602309fdb6b191e7ed09b4.tar.bz2 |
Use O_CLOEXEC when loading ld.so cache
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | NEWS | 4 | ||||
-rw-r--r-- | elf/dl-misc.c | 10 |
3 files changed, 14 insertions, 5 deletions
@@ -1,3 +1,8 @@ +2011-09-05 Ulrich Drepper <drepper@gmail.com> + + [BZ #13068] + * elf/dl-misc.c (_dl_sysdep_read_whole_file): Use O_CLOEXEC. + 2011-07-20 Liubov Dmitrieva <liubov.dmitrieva@intel.com> * sysdeps/i386/i686/multiarch/Makefile (sysdep_routines): Add @@ -9,8 +9,8 @@ Version 2.15 * The following bugs are resolved with this release: - 9696, 12868, 12852, 12874, 12885, 12907, 12922, 12935, 13007, 13021, 13114, - 13144 + 9696, 12868, 12852, 12874, 12885, 12907, 12922, 12935, 13007, 13021, + 13068, 13114, 13144 * New program pldd to list loaded object of a process Implemented by Ulrich Drepper. diff --git a/elf/dl-misc.c b/elf/dl-misc.c index d50537a..48310c0 100644 --- a/elf/dl-misc.c +++ b/elf/dl-misc.c @@ -1,5 +1,5 @@ /* Miscellaneous support functions for dynamic linker - Copyright (C) 1997-2004, 2006, 2009 Free Software Foundation, Inc. + Copyright (C) 1997-2004, 2006, 2009, 2011 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 @@ -44,7 +44,11 @@ _dl_sysdep_read_whole_file (const char *file, size_t *sizep, int prot) { void *result = MAP_FAILED; struct stat64 st; - int fd = __open (file, O_RDONLY); + int flags = O_RDONLY; +#ifdef O_CLOEXEC + flags |= O_CLOEXEC; +#endif + int fd = __open (file, flags); if (fd >= 0) { if (__fxstat64 (_STAT_VER, fd, &st) >= 0) @@ -350,7 +354,7 @@ _dl_higher_prime_number (unsigned long int n) UINT32_C (536870909), UINT32_C (1073741789), UINT32_C (2147483647), - /* 4294967291L */ + /* 4294967291L */ UINT32_C (2147483647) + UINT32_C (2147483644) }; |