From: Daniel Bershatsky Date: Wed, 12 Jun 2024 17:07:23 +0000 (+0300) Subject: libsubid: Fail on plugin loading if no subid_free provided X-Git-Tag: 4.16.0-rc1~4 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=b620b5d0d13e2024dd895cf5bf58019c89718fdd;p=thirdparty%2Fshadow.git libsubid: Fail on plugin loading if no subid_free provided --- diff --git a/lib/nss.c b/lib/nss.c index 0f414e188..dcb8160bd 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 1a9de2375..06cb38b44 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); +}