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/dl-close.c | |
parent | 509361270b4b889e991400a70eb87d45304c01cd (diff) | |
download | glibc-a42faf59d6d9f82e5293a9ebcc26d9c9e562b12b.zip glibc-a42faf59d6d9f82e5293a9ebcc26d9c9e562b12b.tar.gz glibc-a42faf59d6d9f82e5293a9ebcc26d9c9e562b12b.tar.bz2 |
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/dl-close.c')
0 files changed, 0 insertions, 0 deletions