mirror of
https://sourceware.org/git/glibc.git
synced 2024-12-24 03:31:07 +00:00
elf: Fix audit regression
Commit 03e187a41d
added a regression when an audit module does not have
libc as DT_NEEDED (although unusual it is possible).
Checked on x86_64-linux-gnu.
This commit is contained in:
parent
c37fc3ebf0
commit
3908fa933a
12
elf/Makefile
12
elf/Makefile
@ -219,7 +219,7 @@ tests += restest1 preloadtest loadfail multiload origtest resolvfail \
|
||||
tst-dlopen-self tst-auditmany tst-initfinilazyfail tst-dlopenfail \
|
||||
tst-dlopenfail-2 \
|
||||
tst-filterobj tst-filterobj-dlopen tst-auxobj tst-auxobj-dlopen \
|
||||
tst-audit14 tst-audit15 tst-audit16 \
|
||||
tst-audit14 tst-audit15 tst-audit16 tst-audit17 \
|
||||
tst-single_threaded tst-single_threaded-pthread \
|
||||
tst-tls-ie tst-tls-ie-dlmopen argv0test \
|
||||
tst-glibc-hwcaps tst-glibc-hwcaps-prepend tst-glibc-hwcaps-mask \
|
||||
@ -1475,6 +1475,16 @@ $(objpfx)tst-auditlogmod-3.so: $(libsupport)
|
||||
$(objpfx)tst-audit16.out: \
|
||||
$(objpfx)tst-auditlogmod-1.so $(objpfx)tst-auditlogmod-2.so \
|
||||
$(objpfx)tst-auditlogmod-3.so
|
||||
$(objpfx)tst-audit17.out: $(objpfx)tst-auditmod17.so
|
||||
# The test check if a audit library without libc.so on DT_NEEDED works as
|
||||
# intended, so it uses an explicit link rule.
|
||||
$(objpfx)tst-auditmod17.so: $(objpfx)tst-auditmod17.os
|
||||
$(CC) -nostdlib -nostartfiles -shared -o $@.new \
|
||||
$(filter-out $(map-file),$^)
|
||||
$(call after-link,$@.new)
|
||||
mv -f $@.new $@
|
||||
CFLAGS-.os += $(call elide-stack-protector,.os,tst-auditmod17)
|
||||
tst-audit17-ENV = LD_AUDIT=$(objpfx)tst-auditmod17.so
|
||||
|
||||
# tst-sonamemove links against an older implementation of the library.
|
||||
LDFLAGS-tst-sonamemove-linkmod1.so = \
|
||||
|
@ -769,16 +769,9 @@ dl_open_worker (void *a)
|
||||
namespace. */
|
||||
if (!args->libc_already_loaded)
|
||||
{
|
||||
/* dlopen cannot be used to load an initial libc by design. */
|
||||
struct link_map *libc_map = GL(dl_ns)[args->nsid].libc_map;
|
||||
#ifdef SHARED
|
||||
bool initial = libc_map->l_ns == LM_ID_BASE;
|
||||
#else
|
||||
/* In the static case, there is only one namespace, but it
|
||||
contains a secondary libc (the primary libc is statically
|
||||
linked). */
|
||||
bool initial = false;
|
||||
#endif
|
||||
_dl_call_libc_early_init (libc_map, initial);
|
||||
_dl_call_libc_early_init (libc_map, false);
|
||||
}
|
||||
|
||||
/* Run the initializer functions of new objects. Temporarily
|
||||
|
25
elf/tst-audit17.c
Normal file
25
elf/tst-audit17.c
Normal file
@ -0,0 +1,25 @@
|
||||
/* Check DT_AUDIT with audit not linked against libc.
|
||||
Copyright (C) 2021 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, see
|
||||
<https://www.gnu.org/licenses/>. */
|
||||
|
||||
static int
|
||||
do_test (void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
#include <support/test-driver.c>
|
23
elf/tst-auditmod17.c
Normal file
23
elf/tst-auditmod17.c
Normal file
@ -0,0 +1,23 @@
|
||||
/* Check DT_AUDIT with audit not linked against libc.
|
||||
Copyright (C) 2021 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, see
|
||||
<https://www.gnu.org/licenses/>. */
|
||||
|
||||
unsigned int
|
||||
la_version (unsigned int version)
|
||||
{
|
||||
return version;
|
||||
}
|
Loading…
Reference in New Issue
Block a user