Merge pull request #31565 from YHNdnzj/safe_dlclose

dlfcn-util: use safe_dlclose for dlclosep
This commit is contained in:
Lennart Poettering
2024-03-01 22:39:11 +01:00
committed by GitHub
2 changed files with 12 additions and 10 deletions
+11 -9
View File
@@ -5,7 +5,17 @@
#include "macro.h"
DEFINE_TRIVIAL_CLEANUP_FUNC_FULL(void*, dlclose, NULL);
static inline void* safe_dlclose(void *dl) {
if (!dl)
return NULL;
assert_se(dlclose(dl) == 0);
return NULL;
}
static inline void dlclosep(void **dlp) {
safe_dlclose(*dlp);
}
int dlsym_many_or_warn_sentinel(void *dl, int log_level, ...) _sentinel_;
int dlopen_many_sym_or_warn_sentinel(void **dlp, const char *filename, int log_level, ...) _sentinel_;
@@ -29,11 +39,3 @@ int dlopen_many_sym_or_warn_sentinel(void **dlp, const char *filename, int log_l
/* libbpf is a bit confused about type-safety and API compatibility. Provide a macro that can tape over that mess. Sad. */
#define DLSYM_ARG_FORCE(arg) \
&sym_##arg, STRINGIFY(arg)
static inline void *safe_dlclose(void *p) {
if (!p)
return NULL;
assert_se(dlclose(p) == 0);
return NULL;
}
+1 -1
View File
@@ -1455,7 +1455,7 @@ int userdb_block_nss_systemd(int b) {
return 0;
}
call = (int (*)(bool b)) dlsym(dl, "_nss_systemd_block");
call = dlsym(dl, "_nss_systemd_block");
if (!call)
/* If the file is installed but lacks the symbol we expect, things are weird, let's complain */
return log_debug_errno(SYNTHETIC_ERRNO(ELIBBAD),