The branch, master has been updated via 2d57b2a ctest: Move to new dashboard via 31fa6a7 nwrap: Update header via 35c8ff2 Update LICENSE file via fb1ef75 Rename COPYING to LICENSE via c6d06bf nwrap: Print errno when hsearch() returns NULL via 853ae24 tests: Add musl-libc 1.1 compatibility (gethostent()) via 54fb274 tests: Add musl-libc 1.1 compatibility (getaddrinfo(), EAI_SERVICE) via 8ba1653 tests: Add musl-libc 1.1 compatibility (getaddrinfo(), IP-addresses) via f8bb2de cpack: Do not package build dirs in source tarball via 52c79f2 cmake: Replace deprecated get_target_property() from 4298e3f nwrap: Fix strotoul checks for NSS_WRAPPER_MAX_HOSTENTS
https://git.samba.org/?p=nss_wrapper.git;a=shortlog;h=master - Log ----------------------------------------------------------------- commit 2d57b2a56ddcfc229e0b6445c534c558094e336b Author: Andreas Schneider <a...@samba.org> Date: Thu Jul 5 10:15:11 2018 +0200 ctest: Move to new dashboard Signed-off-by: Andreas Schneider <a...@samba.org> Reviewed-by: Stefan Metzmacher <me...@samba.org> commit 31fa6a7c7a9453d91ef4683581814fb02c2a3a45 Author: Andreas Schneider <a...@samba.org> Date: Fri Jun 22 08:46:06 2018 +0200 nwrap: Update header Signed-off-by: Andreas Schneider <a...@samba.org> Reviewed-by: Stefan Metzmacher <me...@samba.org> commit 35c8ff28450ec5dbd16d9619cac936db9e00ee3d Author: Andreas Schneider <a...@samba.org> Date: Fri Jun 22 08:34:27 2018 +0200 Update LICENSE file Signed-off-by: Andreas Schneider <a...@samba.org> Reviewed-by: Stefan Metzmacher <me...@samba.org> commit fb1ef750dc442a561e17536b8212261841478536 Author: Andreas Schneider <a...@samba.org> Date: Fri Jun 22 08:32:43 2018 +0200 Rename COPYING to LICENSE Signed-off-by: Andreas Schneider <a...@samba.org> Reviewed-by: Stefan Metzmacher <me...@samba.org> commit c6d06bf617d25cb2b751853f5c6af0fe0e152f69 Author: Andreas Schneider <a...@samba.org> Date: Mon Jan 22 17:30:33 2018 +0100 nwrap: Print errno when hsearch() returns NULL Signed-off-by: Andreas Schneider <a...@samba.org> Reviewed-by: Stefan Metzmacher <me...@samba.org> commit 853ae24558611ee7738e60ecd0e4d805df7c6b00 Author: Dennis Schridde <dennis.schri...@uni-heidelberg.de> Date: Wed Jan 25 22:25:24 2017 +0100 tests: Add musl-libc 1.1 compatibility (gethostent()) musl-libc stubs gethostent() and replies with NULL in any case. Thus we have to check the sensibility of the function before performing tests. Tested with musl-libc 1.1.16-r13 on Alpine Linux 3.6. Also confirmed to not break with GNU libc 2.23-0ubuntu9 on Ubuntu 16.04.3 LTS. Signed-Off-By: Dennis Schridde <dennis.schri...@uni-heidelberg.de> Reviewed-by: Andreas Schneider <a...@samba.org> Reviewed-by: Stefan Metzmacher <me...@samba.org> commit 54fb2748b2e0f720017982678d50357e90b695d9 Author: Dennis Schridde <dennis.schri...@uni-heidelberg.de> Date: Thu Aug 3 11:34:07 2017 +0200 tests: Add musl-libc 1.1 compatibility (getaddrinfo(), EAI_SERVICE) The tests of getaddrinfo() had to be adapted, because musl-libc, unlike glibc and others, returns EAI_SERVICE if the requested service is not available for the requested socket type. Tested with musl-libc 1.1.16-r13 on Alpine Linux 3.6. Also confirmed to not break with GNU libc 2.23-0ubuntu9 on Ubuntu 16.04.3 LTS. Signed-Off-By: Dennis Schridde <dennis.schri...@uni-heidelberg.de> Reviewed-by: Andreas Schneider <a...@samba.org> Reviewed-by: Stefan Metzmacher <me...@samba.org> commit 8ba16534b6f02c6337106cc17ced3c1f48b903fa Author: Dennis Schridde <dennis.schri...@uni-heidelberg.de> Date: Wed Jan 25 22:25:24 2017 +0100 tests: Add musl-libc 1.1 compatibility (getaddrinfo(), IP-addresses) The tests of getaddrinfo() had to be adapted, because musl-libc, unlike glibc and others, replies with the same canonical name that was used in the original request, if the requested "node" was an IP-address Tested with musl-libc 1.1.16-r13 on Alpine Linux 3.6. Also confirmed to not break with GNU libc 2.23-0ubuntu9 on Ubuntu 16.04.3 LTS. Signed-Off-By: Dennis Schridde <dennis.schri...@uni-heidelberg.de> Reviewed-by: Andreas Schneider <a...@samba.org> Reviewed-by: Stefan Metzmacher <me...@samba.org> commit f8bb2dea54ac9f4276b73befcb83fdf0d120d6ba Author: Andreas Schneider <a...@samba.org> Date: Fri Jun 22 09:00:30 2018 +0200 cpack: Do not package build dirs in source tarball Signed-off-by: Andreas Schneider <a...@samba.org> Reviewed-by: Stefan Metzmacher <me...@samba.org> commit 52c79f2e0284baa04a180280dc92875cef13f757 Author: Andreas Schneider <a...@samba.org> Date: Fri Jun 22 08:55:40 2018 +0200 cmake: Replace deprecated get_target_property() Signed-off-by: Andreas Schneider <a...@samba.org> Reviewed-by: Stefan Metzmacher <me...@samba.org> ----------------------------------------------------------------------- Summary of changes: CPackConfig.cmake | 4 +-- CTestConfig.cmake | 6 ++-- ConfigureChecks.cmake | 69 +++++++++++++++++++++++++++++++++++++++++++++ COPYING => LICENSE | 9 ++++-- src/CMakeLists.txt | 7 +---- src/nss_wrapper.c | 13 ++++++--- tests/test_getaddrinfo.c | 20 +++++++++++++ tests/test_nwrap_disabled.c | 12 ++++++++ 8 files changed, 122 insertions(+), 18 deletions(-) rename COPYING => LICENSE (82%) Changeset truncated at 500 lines: diff --git a/CPackConfig.cmake b/CPackConfig.cmake index dc74dfa..e1b83ac 100644 --- a/CPackConfig.cmake +++ b/CPackConfig.cmake @@ -7,7 +7,7 @@ set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "The SSH library") set(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_SOURCE_DIR}/README") set(CPACK_PACKAGE_VENDOR "The SSH Library Development Team") set(CPACK_PACKAGE_INSTALL_DIRECTORY ${CPACK_PACKAGE_NAME}) -set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_SOURCE_DIR}/COPYING") +set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_SOURCE_DIR}/LICENSE") ### versions @@ -19,7 +19,7 @@ set(CPACK_PACKAGE_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSIO ### source generator set(CPACK_SOURCE_GENERATOR "TGZ") -set(CPACK_SOURCE_IGNORE_FILES "~$;[.]swp$;/[.]svn/;/[.]git/;.gitignore;/build/;/obj/;tags;cscope.*") +set(CPACK_SOURCE_IGNORE_FILES "~$;[.]swp$;/[.]svn/;/[.]git/;.gitignore;/build*;/obj*;tags;cscope.*") set(CPACK_SOURCE_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}") if (WIN32) diff --git a/CTestConfig.cmake b/CTestConfig.cmake index 47a28d0..14dd8d1 100644 --- a/CTestConfig.cmake +++ b/CTestConfig.cmake @@ -1,9 +1,9 @@ set(UPDATE_TYPE "true") -set(CTEST_PROJECT_NAME "nsswrapper") +set(CTEST_PROJECT_NAME "nss_wrapper") set(CTEST_NIGHTLY_START_TIME "01:00:00 UTC") set(CTEST_DROP_METHOD "https") -set(CTEST_DROP_SITE "mock.cryptomilk.org") -set(CTEST_DROP_LOCATION "/submit.php?project=nsswrapper") +set(CTEST_DROP_SITE "test.cmocka.org") +set(CTEST_DROP_LOCATION "/submit.php?project=${CTEST_PROJECT_NAME}") set(CTEST_DROP_SITE_CDASH TRUE) diff --git a/ConfigureChecks.cmake b/ConfigureChecks.cmake index 6f760e6..41029d4 100644 --- a/ConfigureChecks.cmake +++ b/ConfigureChecks.cmake @@ -6,6 +6,7 @@ include(CheckTypeSize) include(CheckStructHasMember) include(CheckPrototypeDefinition) include(TestBigEndian) +include(CheckCSourceRuns) set(PACKAGE ${APPLICATION_NAME}) set(VERSION ${APPLICATION_VERSION}) @@ -270,3 +271,71 @@ if (NOT WIN32) endif (NOT WIN32) set(NWRAP_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES} CACHE INTERNAL "nss_wrapper required system libraries") + +# check whether getaddrinfo() returns "node" in "ai_canonname" for IP-addresses +check_c_source_runs("#include <stddef.h> +#include <string.h> +#include <sys/types.h> +#include <sys/socket.h> +#include <netdb.h> +int main(void) { + struct addrinfo hints; + struct addrinfo *res = NULL; + + memset(&hints, 0, sizeof(struct addrinfo)); + hints.ai_family = AF_INET; + hints.ai_socktype = SOCK_STREAM; + hints.ai_flags = AI_NUMERICHOST | AI_NUMERICSERV; + + if (getaddrinfo(\"0.0.0.0\", \"389\", &hints, &res) != 0) { + return 2; + } + + if (res == NULL) { + return 3; + } + + return strncmp(res->ai_canonname, \"0.0.0.0\", sizeof(\"0.0.0.0\")) != 0; +}" HAVE_GETADDRINFO_SETS_CANONNAME_FOR_IPADDRESSES) +if (HAVE_GETADDRINFO_SETS_CANONNAME_FOR_IPADDRESSES) + add_definitions(-DHAVE_GETADDRINFO_SETS_CANONNAME_FOR_IPADDRESSES) +endif (HAVE_GETADDRINFO_SETS_CANONNAME_FOR_IPADDRESSES) + +# check whether getaddrinfo() returns EAI_SERVICE when the requested service is not available for the requested socket type. +check_c_source_runs("#include <stddef.h> +#include <string.h> +#include <sys/types.h> +#include <sys/socket.h> +#include <netdb.h> +int main(void) { + struct addrinfo hints; + struct addrinfo *res = NULL; + int rc; + + memset(&hints, 0, sizeof(struct addrinfo)); + hints.ai_family = AF_UNSPEC; /* Allow IPv4 or IPv6 */ + hints.ai_socktype = SOCK_DGRAM; /* Datagram socket */ + hints.ai_flags = AI_PASSIVE | AI_NUMERICSERV; /* For wildcard IP address */ + hints.ai_protocol = 0; /* Any protocol */ + hints.ai_canonname = NULL; + + rc = getaddrinfo(NULL, \"echo\", &hints, &res); + return rc != EAI_SERVICE; +}" HAVE_GETADDRINFO_USES_EAI_SERVICE) +if (HAVE_GETADDRINFO_USES_EAI_SERVICE) + add_definitions(-DHAVE_GETADDRINFO_USES_EAI_SERVICE) +endif (HAVE_GETADDRINFO_USES_EAI_SERVICE) + +# check for non-NULL gethostent() +check_c_source_runs("#include <stddef.h> +#include <netdb.h> +int main(void) { + struct hostent *hostent = NULL; + sethostent(0); + hostent = gethostent(); + endhostent(); + return hostent == NULL; +}" HAVE_NONNULL_GETHOSTENT) +if (HAVE_NONNULL_GETHOSTENT) + add_definitions(-DHAVE_NONNULL_GETHOSTENT) +endif (HAVE_NONNULL_GETHOSTENT) diff --git a/COPYING b/LICENSE similarity index 82% rename from COPYING rename to LICENSE index 0100415..be6062e 100644 --- a/COPYING +++ b/LICENSE @@ -1,7 +1,10 @@ -Copyright (C) Stefan Metzmacher 2007 <me...@samba.org> -Copyright (C) Guenther Deschner 2009 <g...@samba.org> -Copyright (C) Andreas Schneider 2013 <a...@samba.org> +BSD 3-Clause License +Copyright (c) 2007, Stefan Metzmacher <me...@samba.org> +Copyright (c) 2009, Guenther Deschner <g...@samba.org> +Copyright (c) 2014-2015, Michael Adam <ob...@samba.org> +Copyright (c) 2015, Robin Hack <hack.ro...@gmail.com> +Copyright (c) 2013-2018, Andreas Schneider <a...@samba.org> All rights reserved. Redistribution and use in source and binary forms, with or without diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 7b89866..2656e9b 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -25,9 +25,4 @@ install( ARCHIVE DESTINATION ${LIB_INSTALL_DIR} ) -# This needs to be at the end -if (POLICY CMP0026) - cmake_policy(SET CMP0026 OLD) -endif() -get_target_property(NWRAP_LOCATION nss_wrapper LOCATION) -set(NSS_WRAPPER_LOCATION ${NWRAP_LOCATION} PARENT_SCOPE) +set(NSS_WRAPPER_LOCATION "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_SHARED_LIBRARY_PREFIX}nss_wrapper${CMAKE_SHARED_LIBRARY_SUFFIX}" PARENT_SCOPE) diff --git a/src/nss_wrapper.c b/src/nss_wrapper.c index 835bc87..dd0848a 100644 --- a/src/nss_wrapper.c +++ b/src/nss_wrapper.c @@ -1,8 +1,11 @@ /* - * Copyright (C) Stefan Metzmacher 2007 <me...@samba.org> - * Copyright (C) Guenther Deschner 2009 <g...@samba.org> - * Copyright (C) Andreas Schneider 2013 <a...@samba.org> + * BSD 3-Clause License * + * Copyright (c) 2007, Stefan Metzmacher <me...@samba.org> + * Copyright (c) 2009, Guenther Deschner <g...@samba.org> + * Copyright (c) 2014-2015, Michael Adam <ob...@samba.org> + * Copyright (c) 2015, Robin Hack <hack.ro...@gmail.com> + * Copyright (c) 2013-2018, Andreas Schneider <a...@samba.org> * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -2633,7 +2636,9 @@ static bool nwrap_ed_inventarize_add_new(char *const h_name, p = hsearch(e, ENTER); if (p == NULL) { - NWRAP_LOG(NWRAP_LOG_ERROR, "Hash table is full!"); + NWRAP_LOG(NWRAP_LOG_ERROR, + "Hash table is full (%s)!", + strerror(errno)); return false; } diff --git a/tests/test_getaddrinfo.c b/tests/test_getaddrinfo.c index 438ea12..47eb8f2 100644 --- a/tests/test_getaddrinfo.c +++ b/tests/test_getaddrinfo.c @@ -207,7 +207,11 @@ static void test_nwrap_getaddrinfo_any(void **state) assert_int_equal(res->ai_family, AF_INET); assert_int_equal(res->ai_socktype, SOCK_STREAM); +#ifdef HAVE_GETADDRINFO_SETS_CANONNAME_FOR_IPADDRESSES + assert_string_equal(res->ai_canonname, "0.0.0.0"); +#else /* HAVE_GETADDRINFO_SETS_CANONNAME_FOR_IPADDRESSES */ assert_null(res->ai_canonname); +#endif /* HAVE_GETADDRINFO_SETS_CANONNAME_FOR_IPADDRESSES */ sinp = (struct sockaddr_in *)res->ai_addr; @@ -233,7 +237,11 @@ static void test_nwrap_getaddrinfo_any(void **state) assert_int_equal(res->ai_family, AF_INET6); assert_int_equal(res->ai_socktype, SOCK_STREAM); +#ifdef HAVE_GETADDRINFO_SETS_CANONNAME_FOR_IPADDRESSES + assert_string_equal(res->ai_canonname, "::"); +#else /* HAVE_GETADDRINFO_SETS_CANONNAME_FOR_IPADDRESSES */ assert_null(res->ai_canonname); +#endif /* HAVE_GETADDRINFO_SETS_CANONNAME_FOR_IPADDRESSES */ sin6p = (struct sockaddr_in6 *)res->ai_addr; @@ -268,7 +276,11 @@ static void test_nwrap_getaddrinfo_local(void **state) assert_int_equal(res->ai_family, AF_INET); assert_int_equal(res->ai_socktype, SOCK_STREAM); +#ifdef HAVE_GETADDRINFO_SETS_CANONNAME_FOR_IPADDRESSES + assert_string_equal(res->ai_canonname, "127.0.0.1"); +#else /* HAVE_GETADDRINFO_SETS_CANONNAME_FOR_IPADDRESSES */ assert_null(res->ai_canonname); +#endif /* HAVE_GETADDRINFO_SETS_CANONNAME_FOR_IPADDRESSES */ sinp = (struct sockaddr_in *)res->ai_addr; ip = inet_ntoa(sinp->sin_addr); @@ -581,7 +593,11 @@ static void test_nwrap_getaddrinfo_flags_ai_numericserv(void **state) */ rc = getaddrinfo(NULL, "echo", &hints, &res); +#ifdef HAVE_GETADDRINFO_USES_EAI_SERVICE + assert_int_equal(rc, EAI_SERVICE); +#else /* HAVE_GETADDRINFO_USES_EAI_SERVICE */ assert_int_equal(rc, EAI_NONAME); +#endif /* HAVE_GETADDRINFO_USES_EAI_SERVICE */ rc = getaddrinfo(NULL, "80", &hints, &res); assert_int_equal(rc, 0); @@ -590,7 +606,11 @@ static void test_nwrap_getaddrinfo_flags_ai_numericserv(void **state) /* Crippled input */ rc = getaddrinfo(NULL, "80a1", &hints, &res); +#ifdef HAVE_GETADDRINFO_USES_EAI_SERVICE + assert_int_equal(rc, EAI_SERVICE); +#else /* HAVE_GETADDRINFO_USES_EAI_SERVICE */ assert_int_equal(rc, EAI_NONAME); +#endif /* HAVE_GETADDRINFO_USES_EAI_SERVICE */ /* * Calls with non-NULL name are handled by nwrap diff --git a/tests/test_nwrap_disabled.c b/tests/test_nwrap_disabled.c index 56e1589..474dda7 100644 --- a/tests/test_nwrap_disabled.c +++ b/tests/test_nwrap_disabled.c @@ -38,6 +38,7 @@ static void test_nwrap_passwd_group(void **state) /* Test libnsl */ static void test_nwrap_hostent(void **state) { +#ifdef HAVE_NONNULL_GETHOSTENT struct hostent *he; (void) state; /* unused */ @@ -48,6 +49,13 @@ static void test_nwrap_hostent(void **state) assert_non_null(he); endhostent(); +#else + (void) state; /* unused */ + + sethostent(0); + gethostent(); + endhostent(); +#endif } static void test_nwrap_gethostname(void **state) @@ -84,7 +92,11 @@ static void test_nwrap_getaddrinfo_local(void **state) assert_int_equal(res->ai_family, AF_INET); assert_int_equal(res->ai_socktype, SOCK_STREAM); +#ifdef HAVE_GETADDRINFO_SETS_CANONNAME_FOR_IPADDRESSES + assert_string_equal(res->ai_canonname, "127.0.0.1"); +#else /* HAVE_GETADDRINFO_SETS_CANONNAME_FOR_IPADDRESSES */ assert_null(res->ai_canonname); +#endif /* HAVE_GETADDRINFO_SETS_CANONNAME_FOR_IPADDRESSES */ sinp = (struct sockaddr_in *)res->ai_addr; -- NSS Wrapper Repository