mirror of
git://git.musl-libc.org/musl
synced 2024-12-21 22:30:09 +00:00
use AT_EXECFN, if available, for dynamic linker to identify main program
fallback to argv[0] as before. unlike argv[0], AT_EXECFN was a valid (but possibly relative) pathname for the new program image at the time the execve syscall was made. as a special case, ignore AT_EXECFN if it begins with "/proc/", in order not to give bogus (and possibly harmful) results when fexecve was used.
This commit is contained in:
parent
a897a20a57
commit
cc51505a32
@ -1016,7 +1016,11 @@ void *__dynlink(int argc, char **argv)
|
||||
}
|
||||
if (app->tls_size) app->tls_image = (char *)app->base + tls_image;
|
||||
if (interp_off) lib->name = (char *)app->base + interp_off;
|
||||
app->name = argv[0];
|
||||
if ((aux[0] & (1UL<<AT_EXECFN))
|
||||
&& strncmp((char *)aux[AT_EXECFN], "/proc/", 6))
|
||||
app->name = (char *)aux[AT_EXECFN];
|
||||
else
|
||||
app->name = argv[0];
|
||||
app->kernel_mapped = 1;
|
||||
app->dynv = (void *)(app->base + find_dyn(
|
||||
(void *)aux[AT_PHDR], aux[AT_PHNUM], aux[AT_PHENT]));
|
||||
|
Loading…
Reference in New Issue
Block a user