diff options
author | Gary Benson <gbenson@redhat.com> | 2012-08-17 11:44:37 +0100 |
---|---|---|
committer | Gary Benson <gbenson@redhat.com> | 2012-08-17 11:44:37 +0100 |
commit | d9195db871b11e139050dfa00e333ca8b2f7a677 (patch) | |
tree | a312aa6a453a0745cab0be1c7c6479959eca05d3 | |
parent | 86466cd930d045a44cb7e85398660d9842e463c6 (diff) | |
download | glibc-d9195db871b11e139050dfa00e333ca8b2f7a677.tar glibc-d9195db871b11e139050dfa00e333ca8b2f7a677.tar.gz glibc-d9195db871b11e139050dfa00e333ca8b2f7a677.tar.bz2 glibc-d9195db871b11e139050dfa00e333ca8b2f7a677.zip |
Also set r->r_map when unmapping the first object in a namespace.
When unmapping the first object in a namespace, the runtime linker
did not update the externally visible pointer. This resulted in
debuggers seeing pointers to memory that had been freed.
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | elf/dl-close.c | 2 |
2 files changed, 6 insertions, 1 deletions
@@ -1,3 +1,8 @@ +2012-08-16 Gary Benson <gbenson@redhat.com> + + * elf/dl-close.c (_dl_close_worker): Also set r->r_map when + unmapping the first object in a namespace. + 2012-08-16 Roland McGrath <roland@hack.frob.com> * inet/getnetgrent_r.c (internal_setnetgrent): Renamed to ... diff --git a/elf/dl-close.c b/elf/dl-close.c index 45b218787b..216bd81b62 100644 --- a/elf/dl-close.c +++ b/elf/dl-close.c @@ -641,7 +641,7 @@ _dl_close_worker (struct link_map *map) #ifdef SHARED assert (nsid != LM_ID_BASE); #endif - ns->_ns_loaded = imap->l_next; + r->r_map = ns->_ns_loaded = imap->l_next; } --ns->_ns_nloaded; |