diff options
author | Paul Pluzhnikov <ppluzhnikov@google.com> | 2014-03-24 10:58:26 -0700 |
---|---|---|
committer | Paul Pluzhnikov <ppluzhnikov@google.com> | 2014-03-24 10:58:26 -0700 |
commit | a42faf59d6d9f82e5293a9ebcc26d9c9e562b12b (patch) | |
tree | a124669e62343e6b318af03c82a86a807773c334 /elf/Makefile | |
parent | 509361270b4b889e991400a70eb87d45304c01cd (diff) | |
download | glibc-a42faf59d6d9f82e5293a9ebcc26d9c9e562b12b.tar.gz glibc-a42faf59d6d9f82e5293a9ebcc26d9c9e562b12b.tar.xz glibc-a42faf59d6d9f82e5293a9ebcc26d9c9e562b12b.zip |
Fix BZ #16634.
An application that erroneously tries to repeatedly dlopen("a.out", ...) may hit assertion failure: Inconsistency detected by ld.so: dl-tls.c: 474: _dl_allocate_tls_init: Assertion `listp != ((void *)0)' failed! dlopen() actually fails with "./a.out: cannot dynamically load executable", but it does so after incrementing dl_tls_max_dtv_idx. Once we run out of TLS_SLOTINFO_SURPLUS (62), we exit with above assertion failure. 2014-03-24 Paul Pluzhnikov <ppluzhnikov@google.com> [BZ #16634] * elf/dl-load.c (open_verify): Add mode parameter. Error early when ET_EXEC and mode does not have __RTLD_OPENEXEC. (open_path): Change from boolean 'secure' to complete flag 'mode' (_dl_map_object): Adjust. * elf/Makefile (tests): Add tst-dlopen-aout. * elf/tst-dlopen-aout.c: New test.
Diffstat (limited to 'elf/Makefile')
-rw-r--r-- | elf/Makefile | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/elf/Makefile b/elf/Makefile index df138fc2d8..d96cd40743 100644 --- a/elf/Makefile +++ b/elf/Makefile @@ -148,7 +148,7 @@ tests += loadtest restest1 preloadtest loadfail multiload origtest resolvfail \ tst-stackguard1 tst-addr1 tst-thrlock \ tst-unique1 tst-unique2 tst-unique3 tst-unique4 \ tst-initorder tst-initorder2 tst-relsort1 tst-null-argv \ - tst-ptrguard1 + tst-ptrguard1 tst-dlopen-aout # reldep9 test-srcs = tst-pathopt selinux-enabled := $(shell cat /selinux/enforce 2> /dev/null) @@ -1056,6 +1056,7 @@ tst-leaks1-static-ENV = MALLOC_TRACE=$(objpfx)tst-leaks1-static.mtrace $(objpfx)tst-addr1: $(libdl) $(objpfx)tst-thrlock: $(libdl) $(shared-thread-library) +$(objpfx)tst-dlopen-aout: $(libdl) $(shared-thread-library) CFLAGS-ifuncmain1pic.c += $(pic-ccflag) CFLAGS-ifuncmain1picstatic.c += $(pic-ccflag) |