From b620b5d0d13e2024dd895cf5bf58019c89718fdd Mon Sep 17 00:00:00 2001 From: Daniel Bershatsky Date: Wed, 12 Jun 2024 20:07:23 +0300 Subject: [PATCH] libsubid: Fail on plugin loading if no subid_free provided --- lib/nss.c | 4 ++-- tests/libsubid/04_nss/libsubid_zzz.c | 4 ++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/lib/nss.c b/lib/nss.c index 0f414e18..dcb8160b 100644 --- a/lib/nss.c +++ b/lib/nss.c @@ -133,8 +133,8 @@ void nss_init(const char *nsswitch_path) { } subid_nss->free = dlsym(h, "shadow_subid_free"); if (!subid_nss->free) { - // Fallback to free(3) for backward compatibility. - subid_nss->free = free; + fprintf(shadow_logfd, "%s did not provide @subid_free@\n", libname); + goto close_lib; } subid_nss->handle = h; goto done; diff --git a/tests/libsubid/04_nss/libsubid_zzz.c b/tests/libsubid/04_nss/libsubid_zzz.c index 1a9de237..06cb38b4 100644 --- a/tests/libsubid/04_nss/libsubid_zzz.c +++ b/tests/libsubid/04_nss/libsubid_zzz.c @@ -138,3 +138,7 @@ enum subid_status shadow_subid_list_owner_ranges(const char *owner, enum subid_t return SUBID_STATUS_SUCCESS; } + +void shadow_subid_free(void *ptr) { + free(ptr); +}