Bug 1934162
| Summary: | glibc: ldconfig segfaults when dynamic tokens are in LD_LIBRARY_PATH | ||
|---|---|---|---|
| Product: | Red Hat Enterprise Linux 8 | Reporter: | Sebastien Aime <saime> |
| Component: | glibc | Assignee: | DJ Delorie <dj> |
| Status: | CLOSED ERRATA | QA Contact: | Sergey Kolosov <skolosov> |
| Severity: | medium | Docs Contact: | Petr Hybl <phybl> |
| Priority: | unspecified | ||
| Version: | 8.3 | CC: | ashankar, codonell, dj, fweimer, jvaldez, mnewsome, pfrankli, phybl, sipoyare |
| Target Milestone: | rc | Keywords: | Patch, Triaged |
| Target Release: | --- | Flags: | pm-rhel:
mirror+
|
| Hardware: | x86_64 | ||
| OS: | Linux | ||
| Whiteboard: | |||
| Fixed In Version: | glibc-2.28-171.el8 | Doc Type: | Bug Fix |
| Doc Text: |
.Statically linked applications no longer crash
Previously, the initialization code of the dynamic loader, which is linked into statically linked binaries, did not initialize a link map variable correctly. Consequently, statically linked applications crashed if `LD_LIBRABY__PATH` contained a dynamic token string. With this update statically linked applications no longer crash.
|
Story Points: | --- |
| Clone Of: | Environment: | ||
| Last Closed: | 2022-05-10 15:17:34 UTC | Type: | Bug |
| Regression: | --- | Mount Type: | --- |
| Documentation: | --- | CRM: | |
| Verified Versions: | Category: | --- | |
| oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |
| Cloudforms Team: | --- | Target Upstream Version: | |
| Embargoed: | |||
|
Description
Sebastien Aime
2021-03-02 15:57:07 UTC
Thanks for the report. As a first step, we are going to revive the upstream patch and get it fixed there. Upstream commits to backport:
commit 4e6db99c665d3b82a70a3e218860ef087b1555b4
Author: Florian Weimer <fweimer>
Date: Mon Mar 15 10:33:43 2021 +0100
elf: ld.so --help calls _dl_init_paths without a main map [BZ #27577]
In this case, use the link map of the dynamic loader itself as
a replacement. This is more than just a hack: if we ever support
DT_RUNPATH/DT_RPATH for the dynamic loader, reporting it for
ld.so --help (without further command line arguments) would be the
right thing to do.
Fixes commit 332421312576bd7095e70589154af99b124dd2d1 ("elf: Always
set l in _dl_init_paths (bug 23462)").
commit 332421312576bd7095e70589154af99b124dd2d1
Author: Carlos O'Donell <carlos>
Date: Fri Mar 12 16:44:47 2021 +0100
elf: Always set l in _dl_init_paths (bug 23462)
After d1d5471579eb0426671bf94f2d71e61dfb204c30 ("Remove dead
DL_DST_REQ_STATIC code.") we always setup the link map l to make the
static and shared cases the same. The bug is that in elf/dl-load.c
(_dl_init_paths) we conditionally set l only in the #ifdef SHARED
case, but unconditionally use it later. The simple solution is to
remove the #ifdef SHARED conditional, because it's no longer needed,
and unconditionally setup l for both the static and shared cases. A
regression test is added to run a static binary with
LD_LIBRARY_PATH='$ORIGIN' which crashes before the fix and runs after
the fix.
Co-Authored-By: Florian Weimer <fweimer>
Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory (glibc bug fix and enhancement update), and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. https://access.redhat.com/errata/RHBA-2022:2005 |