mirror of
https://sourceware.org/git/glibc.git
synced 2025-07-29 11:41:21 +03:00
Avoid crashing in LD_DEBUG when program name is unavailable
Resolves: #15465 The program name may be unavailable if the user application tampers with argc and argv[]. Some parts of the dynamic linker caters for this while others don't, so this patch consolidates the check and fallback into a single macro and updates all users.
This commit is contained in:
@ -54,7 +54,7 @@ call_init (struct link_map *l, int argc, char **argv, char **env)
|
||||
/* Print a debug message if wanted. */
|
||||
if (__builtin_expect (GLRO(dl_debug_mask) & DL_DEBUG_IMPCALLS, 0))
|
||||
_dl_debug_printf ("\ncalling init: %s\n\n",
|
||||
l->l_name[0] ? l->l_name : rtld_progname);
|
||||
DSO_FILENAME (l->l_name));
|
||||
|
||||
/* Now run the local constructors. There are two forms of them:
|
||||
- the one named by DT_INIT
|
||||
@ -110,8 +110,7 @@ _dl_init (struct link_map *main_map, int argc, char **argv, char **env)
|
||||
|
||||
if (__builtin_expect (GLRO(dl_debug_mask) & DL_DEBUG_IMPCALLS, 0))
|
||||
_dl_debug_printf ("\ncalling preinit: %s\n\n",
|
||||
main_map->l_name[0]
|
||||
? main_map->l_name : rtld_progname);
|
||||
DSO_FILENAME (main_map->l_name));
|
||||
|
||||
addrs = (ElfW(Addr) *) (preinit_array->d_un.d_ptr + main_map->l_addr);
|
||||
for (cnt = 0; cnt < i; ++cnt)
|
||||
|
Reference in New Issue
Block a user