tree-wide: always do dlopen() with RTLD_NOW + RTLD_NODELETE
authorLennart Poettering <lennart@poettering.net>
Tue, 1 Oct 2024 14:44:18 +0000 (16:44 +0200)
committerLennart Poettering <lennart@poettering.net>
Wed, 2 Oct 2024 05:13:21 +0000 (07:13 +0200)
commitbd4beaa2ebfbbec0a1263a7091a91e528ce8cf13
tree03c1c4c02fabe2542c576bbf490e4cc7a26b1c35
parentb19e2431d7614c19bbc4050940b53eccbe4bd542
tree-wide: always do dlopen() with RTLD_NOW + RTLD_NODELETE

Let's systematically use RTL_NOW|RLTD_NODELETE as flags passed to
dlopen(), across our codebase.

Various distros build with "-z now" anyway, hence it's weird to specify
RTLD_LAZY trying to override that (which it doesn't). Hence, let's
follow suit, and just do what everybody else does.

Also set RTLD_NODELETE, which is apparently what distros will probably
end up implying sooner or later anyway. Given that for pretty much all
our dlopen() calls we never call dlclose() anyway, let's just set this
everywhere too, to make things systematic.

This way, the flags we use by default match what distros such as fedora
do, there are no surprises, and read-only relocations can be a thing.

Fixes: #34537
src/basic/dlfcn-util.c
src/shared/bpf-dlopen.c
src/shared/idn-util.c
src/shared/tpm2-util.c
src/shared/userdb.c
src/test/test-dlopen.c
src/test/test-nss-hosts.c
src/test/test-nss-users.c