diff options
-rw-r--r-- | ChangeLog | 8 | ||||
-rw-r--r-- | NEWS | 2 | ||||
-rw-r--r-- | elf/rtld.c | 11 |
3 files changed, 16 insertions, 5 deletions
@@ -1,3 +1,11 @@ +2010-09-28 Andreas Schwab <schwab@redhat.com> + Ulrich Drepper <drepper@gmail.com> + + [BZ #12489] + * elf/rtld.c (dl_main): Move setting of GLRO(dl_init_all_dirs) + before performing relro protection. At old place add assertion + to make sure nothing changed. + 2011-02-16 Ryan S. Arnold <rsa@us.ibm.com> * sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep.h: @@ -13,7 +13,7 @@ Version 2.13 11655, 11701, 11840, 11856, 11883, 11903, 11904, 11968, 11979, 12005, 12037, 12067, 12077, 12078, 12092, 12093, 12107, 12108, 12113, 12140, 12159, 12167, 12191, 12194, 12201, 12204, 12205, 12207, 12348, 12378, - 12394, 12397 + 12394, 12397, 12489 * New Linux interfaces: prlimit, prlimit64, fanotify_init, fanotify_mark diff --git a/elf/rtld.c b/elf/rtld.c index 851038089c..174954bf3b 100644 --- a/elf/rtld.c +++ b/elf/rtld.c @@ -1,5 +1,5 @@ /* Run time dynamic linker. - Copyright (C) 1995-2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. + Copyright (C) 1995-2010, 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 @@ -2179,6 +2179,10 @@ ERROR: ld.so: object '%s' cannot be loaded as audit interface: %s; ignored.\n", we need it in the memory handling later. */ GLRO(dl_initial_searchlist) = *GL(dl_ns)[LM_ID_BASE]._ns_main_searchlist; + /* Remember the last search directory added at startup, now that + malloc will no longer be the one from dl-minimal.c. */ + GLRO(dl_init_all_dirs) = GL(dl_all_dirs); + if (prelinked) { if (main_map->l_info [ADDRIDX (DT_GNU_CONFLICT)] != NULL) @@ -2298,9 +2302,8 @@ ERROR: ld.so: object '%s' cannot be loaded as audit interface: %s; ignored.\n", lossage); } - /* Remember the last search directory added at startup, now that - malloc will no longer be the one from dl-minimal.c. */ - GLRO(dl_init_all_dirs) = GL(dl_all_dirs); + /* Make sure no new search directories have been added. */ + assert (GLRO(dl_init_all_dirs) == GL(dl_all_dirs)); if (! prelinked && rtld_multiple_ref) { |