Use O_CLOEXEC when loading ld.so cache
authorUlrich Drepper <drepper@gmail.com>
Mon, 5 Sep 2011 21:18:38 +0000 (17:18 -0400)
committerUlrich Drepper <drepper@gmail.com>
Mon, 5 Sep 2011 21:18:38 +0000 (17:18 -0400)
ChangeLog
NEWS
elf/dl-misc.c

index b0a79e174be7f0e1b1121f1f204366f9d1871d33..4419b9b42c30c504c10b844eb64d4d3f4cf8cd78 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -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
diff --git a/NEWS b/NEWS
index e38c57f23e05006bda1650ed74ce3532ad61b318..c7bb2c646d5d9f2a0c19105ae38211da43903e5a 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -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.
index d50537ade755c5f9ce76a321a6b024af9eed3ffa..48310c0284d88ab5c463f6d2c1f7b13e457896ad 100644 (file)
@@ -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)
   };