diff options
author | Maximilian Bosch <maximilian@mbosch.me> | 2022-01-03 23:19:37 +0100 |
---|---|---|
committer | Maximilian Bosch <maximilian@mbosch.me> | 2022-02-27 10:26:53 +0100 |
commit | 748faeb623035c1360eeb6dc4b05abf5defd721c (patch) | |
tree | 175f31753e9cf3f74d29d7d22321c45431421dc9 /pkgs/development/libraries/libosmscout | |
parent | 6b98a5e51256e8b9d7a5c30f93a8d4178554013f (diff) |
glibc: don't hide symbol `__nss_files_fopen`
I realized that `libredirect` doesn't wrap `__nss_files_fopen` anymore which subsequently broke the `checkPhase` of `pkgs.openssh`[1] which was implemented in 85c63a515d21c8fa27a561a9b8a1db5b18118e39. The reason for that is what `libc_hidden_{def,proto}` are used for, to quote `libc-symbols.h`[2]: The following macros are used for PLT bypassing within libc.so (and if needed other libraries similarly). This basically means that these symbols are altered in a way so that they cannot be wrapped by `libredirect` even though it re-defines `__nss_files_fopen` while being loaded at first with `LD_PRELOAD`. The problem was caused by a change in 2.34[3] where the `files`-module for NSS isn't loaded from `libnss_files.so.2` anymore, but the relevant symbols are directly obtained from `libc.so.6` since a lot of glibc's APIs were merged into `libc.so.6` before. As this would effectively break `libredirect` whenever it tries to wrap C APIs that interact with NSS (e.g. to use `getpwnam(3)`), I decided to undo this change for `__nss_files_fopen`. [1] https://hydra.nixos.org/build/160688523 [2] https://sourceware.org/git/?p=glibc.git;a=blob;f=include/libc-symbols.h;h=d41ecf4384d07f9108698dba1d4e9e6a7a9b975f;hb=ae37d06c7d127817ba43850f0f898b793d42aea7 [3] https://sourceware.org/git/?p=glibc.git;a=commitdiff;h=f9c8b11ed7726b858cd7b7cea0d3d7c5233d78cf;hp=6212bb67f4695962748a5981e1b9fea105af74f6
Diffstat (limited to 'pkgs/development/libraries/libosmscout')
0 files changed, 0 insertions, 0 deletions