mirror of
https://git.musl-libc.org/git/musl
synced 2025-01-06 23:02:10 +03:00
fix regression in dl_iterate_phdr reporting of modules with no TLS
__tls_get_addr should not be called with an invalid TLS module id of 0. in practice it probably "works", returning the DTV length as if it were a pointer, and the callback should probably not inspect dlpi_tls_data in this case, but it's likely that some real-world callbacks use a check on dlpi_tls_data being non-null, rather than on dlpi_tls_modid being nonzero, to conclude that the module has TLS.
This commit is contained in:
parent
0ea78a6421
commit
aad50fcd79
@ -2331,7 +2331,8 @@ int dl_iterate_phdr(int(*callback)(struct dl_phdr_info *info, size_t size, void
|
||||
info.dlpi_adds = gencnt;
|
||||
info.dlpi_subs = 0;
|
||||
info.dlpi_tls_modid = current->tls_id;
|
||||
info.dlpi_tls_data = __tls_get_addr((tls_mod_off_t[]){current->tls_id,0});
|
||||
info.dlpi_tls_data = !current->tls_id ? 0 :
|
||||
__tls_get_addr((tls_mod_off_t[]){current->tls_id,0});
|
||||
|
||||
ret = (callback)(&info, sizeof (info), data);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user