diff options
author | Adhemerval Zanella <adhemerval.zanella@linaro.org> | 2021-07-19 18:42:26 -0300 |
---|---|---|
committer | Adhemerval Zanella <adhemerval.zanella@linaro.org> | 2021-12-28 08:40:38 -0300 |
commit | f0e23d34a7bdf6b90fba954ee741419171ac41b2 (patch) | |
tree | 5feb3808f994056a7e846f423124a718c242eb2f /elf/rtld.c | |
parent | d1b38173c9255b1a4ae00018ad9b35404a7c74d0 (diff) | |
download | glibc-f0e23d34a7bdf6b90fba954ee741419171ac41b2.tar.gz glibc-f0e23d34a7bdf6b90fba954ee741419171ac41b2.tar.xz glibc-f0e23d34a7bdf6b90fba954ee741419171ac41b2.zip |
elf: Issue audit la_objopen for vDSO
The vDSO is is listed in the link_map chain, but is never the subject of an la_objopen call. A new internal flag __RTLD_VDSO is added that acts as __RTLD_OPENEXEC to allocate the required 'struct auditstate' extra space for the 'struct link_map'. The return value from the callback is currently ignored, since there is no PLT call involved by glibc when using the vDSO, neither the vDSO are exported directly. Checked on x86_64-linux-gnu, i686-linux-gnu, and aarch64-linux-gnu. Reviewed-by: Florian Weimer <fweimer@redhat.com>
Diffstat (limited to 'elf/rtld.c')
-rw-r--r-- | elf/rtld.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/elf/rtld.c b/elf/rtld.c index b215ce6909..e78001c2a4 100644 --- a/elf/rtld.c +++ b/elf/rtld.c @@ -1912,6 +1912,12 @@ dl_main (const ElfW(Phdr) *phdr, assert (i == npreloads); } +#ifdef NEED_DL_SYSINFO_DSO + /* Now that the audit modules are opened, call la_objopen for the vDSO. */ + if (GLRO(dl_sysinfo_map) != NULL) + _dl_audit_objopen (GLRO(dl_sysinfo_map), LM_ID_BASE); +#endif + /* Load all the libraries specified by DT_NEEDED entries. If LD_PRELOAD specified some libraries to load, these are inserted before the actual dependencies in the executable's searchlist for symbol resolution. */ |