The branch, master has been updated via 2dd91af src: use LIBC_SO and LIBNSL_SO from GNU libc, if available via 3a4e4a2 doc/nss_wrapper.1: Fix typo of 'environment'. from 2c879a0 cmake: Fix cmocka >= 1.1.6 find_package() in CONFIG mode
https://git.samba.org/?p=nss_wrapper.git;a=shortlog;h=master - Log ----------------------------------------------------------------- commit 2dd91af5fe572ffebf7eb44d8386aec99cd50ab9 Author: Pino Toscano <toscano.p...@tiscali.it> Date: Fri May 30 19:01:29 2014 +0200 src: use LIBC_SO and LIBNSL_SO from GNU libc, if available Look for gnu/lib-names.h and use the LIBC_SO and LIBNSL_SO defines to dlopen libc and libnsl, so the right library is loaded without manually searching for libc.so.N or libnsl.so.N. Signed-off-by: Simon Josefsson <si...@josefsson.org> Reviewed-by: Andreas Schneider <a...@samba.org> Reviewed-by: Stefan Metzmacher <me...@samba.org> commit 3a4e4a2103e7871534e4fa1d85428b0b72ea001a Author: Simon Josefsson <si...@josefsson.org> Date: Sat Aug 5 19:13:08 2023 +0200 doc/nss_wrapper.1: Fix typo of 'environment'. Signed-off-by: Simon Josefsson <si...@josefsson.org> Reviewed-by: Andreas Schneider <a...@samba.org> Reviewed-by: Stefan Metzmacher <me...@samba.org> ----------------------------------------------------------------------- Summary of changes: ConfigureChecks.cmake | 1 + config.h.cmake | 1 + doc/nss_wrapper.1 | 2 +- doc/nss_wrapper.1.txt | 2 +- src/nss_wrapper.c | 18 ++++++++++++++++++ 5 files changed, 22 insertions(+), 2 deletions(-) Changeset truncated at 500 lines: diff --git a/ConfigureChecks.cmake b/ConfigureChecks.cmake index 5bd69db..e74e83e 100644 --- a/ConfigureChecks.cmake +++ b/ConfigureChecks.cmake @@ -54,6 +54,7 @@ check_include_file(shadow.h HAVE_SHADOW_H) check_include_file(grp.h HAVE_GRP_H) check_include_file(nss.h HAVE_NSS_H) check_include_file(nss_common.h HAVE_NSS_COMMON_H) +check_include_file(gnu/lib-names.h HAVE_GNU_LIB_NAMES_H) # FUNCTIONS check_function_exists(strncpy HAVE_STRNCPY) diff --git a/config.h.cmake b/config.h.cmake index 6199962..37cd700 100644 --- a/config.h.cmake +++ b/config.h.cmake @@ -20,6 +20,7 @@ #cmakedefine HAVE_GRP_H 1 #cmakedefine HAVE_NSS_H 1 #cmakedefine HAVE_NSS_COMMON_H 1 +#cmakedefine HAVE_GNU_LIB_NAMES_H 1 /*************************** FUNCTIONS ***************************/ diff --git a/doc/nss_wrapper.1 b/doc/nss_wrapper.1 index 3ef5a89..78727b3 100644 --- a/doc/nss_wrapper.1 +++ b/doc/nss_wrapper.1 @@ -88,7 +88,7 @@ and the group file in .PP \fBNSS_WRAPPER_HOSTS\fR .RS 4 -If you also need to emulate network name resolution in your enviornment, especially with socket_wrapper, you can write a hosts file\&. The format is described in +If you also need to emulate network name resolution in your environment, especially with socket_wrapper, you can write a hosts file\&. The format is described in \fIman 5 hosts\fR\&. Then you can point nss_wrapper to your hosts file using: NSS_WRAPPER_HOSTS=/path/to/your/hosts .RE .PP diff --git a/doc/nss_wrapper.1.txt b/doc/nss_wrapper.1.txt index 4811dde..85a567a 100644 --- a/doc/nss_wrapper.1.txt +++ b/doc/nss_wrapper.1.txt @@ -54,7 +54,7 @@ NSS_WRAPPER_GROUP=/path/to/your/group. *NSS_WRAPPER_HOSTS*:: -If you also need to emulate network name resolution in your enviornment, +If you also need to emulate network name resolution in your environment, especially with socket_wrapper, you can write a hosts file. The format is described in 'man 5 hosts'. Then you can point nss_wrapper to your hosts file using: NSS_WRAPPER_HOSTS=/path/to/your/hosts diff --git a/src/nss_wrapper.c b/src/nss_wrapper.c index 3399f06..78d88dc 100644 --- a/src/nss_wrapper.c +++ b/src/nss_wrapper.c @@ -61,6 +61,10 @@ #include <search.h> #include <assert.h> +#ifdef HAVE_GNU_LIB_NAMES_H +#include <gnu/lib-names.h> +#endif + #include "nss_utils.h" /* * Defining _POSIX_PTHREAD_SEMANTICS before including pwd.h and grp.h gives us @@ -1156,6 +1160,13 @@ static void *nwrap_load_lib_handle(enum nwrap_lib lib) case NWRAP_LIBNSL: #ifdef HAVE_LIBNSL handle = nwrap_main_global->libc->nsl_handle; +#ifdef LIBNSL_SO + if (handle == NULL) { + handle = dlopen(LIBNSL_SO, flags); + + nwrap_main_global->libc->nsl_handle = handle; + } +#endif if (handle == NULL) { for (i = 10; i >= 0; i--) { char soname[256] = {0}; @@ -1193,6 +1204,13 @@ static void *nwrap_load_lib_handle(enum nwrap_lib lib) /* FALL TROUGH */ case NWRAP_LIBC: handle = nwrap_main_global->libc->handle; +#ifdef LIBC_SO + if (handle == NULL) { + handle = dlopen(LIBC_SO, flags); + + nwrap_main_global->libc->handle = handle; + } +#endif if (handle == NULL) { for (i = 10; i >= 0; i--) { char soname[256] = {0}; -- NSS Wrapper Repository