about summary refs log tree commit diff
diff options
context:
space:
mode:
authorBram <bug_rh@spam.wizbit.be>2013-04-18 16:50:49 +0200
committerAllan McRae <allan@archlinux.org>2015-01-25 15:12:10 +1000
commit9317ea653afc26402387cac67042f9890af6add2 (patch)
treebaff3493a2fc6472db20b8cd5fad7c2612e81b01
parentbea58013607c6507108bc73744a0bf63d735f259 (diff)
downloadglibc-9317ea653afc26402387cac67042f9890af6add2.tar.gz
glibc-9317ea653afc26402387cac67042f9890af6add2.tar.xz
glibc-9317ea653afc26402387cac67042f9890af6add2.zip
Fix segmentation fault when LD_LIBRARY_PATH contains only non-existings paths
-rw-r--r--ChangeLog6
-rw-r--r--NEWS18
-rw-r--r--elf/dl-load.c6
3 files changed, 18 insertions, 12 deletions
diff --git a/ChangeLog b/ChangeLog
index 3c5ed3c1d5..951aa27dc6 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2015-01-25  Bram  <bug_rh@spam.wizbit.be>
+
+	[BZ #15378]
+	* elf/dl-load.c (open_path): Avoid writing to 'env_path_list'
+	when none of the search directories exist.
+
 2015-01-24  Adhemerval Zanellla  <azanella@linux.vnet.ibm.com>
 
 	[BZ #17869]
diff --git a/NEWS b/NEWS
index 5ca959ee15..36b369f5cb 100644
--- a/NEWS
+++ b/NEWS
@@ -10,15 +10,15 @@ Version 2.21
 * The following bugs are resolved with this release:
 
   6652, 10672, 12674, 12847, 12926, 13862, 14132, 14138, 14171, 14498,
-  15215, 15884, 16009, 16418, 16191, 16469, 16617, 16619, 16657, 16740,
-  16857, 17192, 17266, 17273, 17344, 17363, 17370, 17371, 17411, 17460,
-  17475, 17485, 17501, 17506, 17508, 17522, 17555, 17570, 17571, 17572,
-  17573, 17574, 17582, 17583, 17584, 17585, 17589, 17594, 17601, 17608,
-  17616, 17625, 17630, 17633, 17634, 17635, 17647, 17653, 17657, 17658,
-  17664, 17665, 17668, 17682, 17702, 17717, 17719, 17722, 17723, 17724,
-  17725, 17732, 17733, 17744, 17745, 17746, 17747, 17748, 17775, 17777,
-  17780, 17781, 17782, 17791, 17793, 17796, 17797, 17803, 17806, 17834,
-  17844, 17848, 17868, 17869, 17870
+  15215, 15378, 15884, 16009, 16418, 16191, 16469, 16617, 16619, 16657,
+  16740, 16857, 17192, 17266, 17273, 17344, 17363, 17370, 17371, 17411,
+  17460, 17475, 17485, 17501, 17506, 17508, 17522, 17555, 17570, 17571,
+  17572, 17573, 17574, 17582, 17583, 17584, 17585, 17589, 17594, 17601,
+  17608, 17616, 17625, 17630, 17633, 17634, 17635, 17647, 17653, 17657,
+  17658, 17664, 17665, 17668, 17682, 17702, 17717, 17719, 17722, 17723,
+  17724, 17725, 17732, 17733, 17744, 17745, 17746, 17747, 17748, 17775,
+  17777, 17780, 17781, 17782, 17791, 17793, 17796, 17797, 17803, 17806,
+  17834, 17844, 17848, 17868, 17869, 17870
 
 * A new semaphore algorithm has been implemented in generic C code for all
   machines. Previous custom assembly implementations of semaphore were
diff --git a/elf/dl-load.c b/elf/dl-load.c
index 73174aa424..41b91fcc86 100644
--- a/elf/dl-load.c
+++ b/elf/dl-load.c
@@ -1889,9 +1889,9 @@ open_path (const char *name, size_t namelen, int mode,
       if (sps->malloced)
 	free (sps->dirs);
 
-      /* rtld_search_dirs is attribute_relro, therefore avoid writing
-	 into it.  */
-      if (sps != &rtld_search_dirs)
+      /* rtld_search_dirs and env_path_list are attribute_relro, therefore
+         avoid writing into it.  */
+      if (sps != &rtld_search_dirs && sps != &env_path_list)
 	sps->dirs = (void *) -1;
     }