Merge pull request #31565 from YHNdnzj/safe_dlclose
dlfcn-util: use safe_dlclose for dlclosep
This commit is contained in:
+11
-9
@@ -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
@@ -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),
|
||||
|
||||
Reference in New Issue
Block a user