diff options
author | dfr <dfr@FreeBSD.org> | 2004-03-29 18:37:37 +0000 |
---|---|---|
committer | dfr <dfr@FreeBSD.org> | 2004-03-29 18:37:37 +0000 |
commit | f758b08c5a4eaeddcb7827e76fe9c0a8903c0cca (patch) | |
tree | a19fedd5aee0ef8b9b6aadab46249b58eabf81a5 /libexec/rtld-elf | |
parent | b39ce8f8984dfbf749b31a9ad0d530fb36f3b5c1 (diff) | |
download | FreeBSD-src-f758b08c5a4eaeddcb7827e76fe9c0a8903c0cca.zip FreeBSD-src-f758b08c5a4eaeddcb7827e76fe9c0a8903c0cca.tar.gz |
If we change obj_rtld.path after initialising __progname, make sure we
change __progname to point at the new storage otherwise it ends up
pointing at freed memory which leads to confusing garbled error messages.
Diffstat (limited to 'libexec/rtld-elf')
-rw-r--r-- | libexec/rtld-elf/rtld.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/libexec/rtld-elf/rtld.c b/libexec/rtld-elf/rtld.c index e47deec..887fee3 100644 --- a/libexec/rtld-elf/rtld.c +++ b/libexec/rtld-elf/rtld.c @@ -323,6 +323,7 @@ _rtld(Elf_Addr *sp, func_ptr_type *exit_proc, Obj_Entry **objp) strcmp(obj_main->interp, obj_rtld.path) != 0) { free(obj_rtld.path); obj_rtld.path = xstrdup(obj_main->interp); + __progname = obj_rtld.path; } digest_dynamic(obj_main, 0); |