Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package nss_wrapper for openSUSE:Factory checked in at 2022-06-25 10:23:51 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/nss_wrapper (Old) and /work/SRC/openSUSE:Factory/.nss_wrapper.new.1548 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "nss_wrapper" Sat Jun 25 10:23:51 2022 rev:14 rq:984842 version:1.1.12 Changes: -------- --- /work/SRC/openSUSE:Factory/nss_wrapper/nss_wrapper.changes 2021-04-12 12:33:43.649050593 +0200 +++ /work/SRC/openSUSE:Factory/.nss_wrapper.new.1548/nss_wrapper.changes 2022-06-25 10:23:56.626646475 +0200 @@ -1,0 +2,9 @@ +Fri Jun 24 08:14:05 UTC 2022 - Andreas Schneider <[email protected]> + +- Update to version 1.1.12 + * Added (de)contructor support on AIX with pragma init/finish + * Fixed possible crash in getaddrinfo() + * Fixed issues with processes closing all fds when forking + * Fixed issues with setgrent() and endpwent() nss module support + +------------------------------------------------------------------- Old: ---- nss_wrapper-1.1.11.tar.gz nss_wrapper-1.1.11.tar.gz.asc New: ---- nss_wrapper-1.1.12.tar.gz nss_wrapper-1.1.12.tar.gz.asc ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ nss_wrapper.spec ++++++ --- /var/tmp/diff_new_pack.AwQqrK/_old 2022-06-25 10:23:57.862648240 +0200 +++ /var/tmp/diff_new_pack.AwQqrK/_new 2022-06-25 10:23:57.866648245 +0200 @@ -1,7 +1,7 @@ # # spec file for package nss_wrapper # -# Copyright (c) 2021 SUSE LLC +# Copyright (c) 2022 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -23,7 +23,7 @@ # ############################# NOTE ################################## Name: nss_wrapper -Version: 1.1.11 +Version: 1.1.12 Release: 0 Summary: A wrapper for the user, group and hosts NSS API License: BSD-3-Clause ++++++ nss_wrapper-1.1.11.tar.gz -> nss_wrapper-1.1.12.tar.gz ++++++ Binary files old/nss_wrapper-1.1.11/.cache/clangd/index/nss_nwrap.c.6CD8D6240BEF45A7.idx and new/nss_wrapper-1.1.12/.cache/clangd/index/nss_nwrap.c.6CD8D6240BEF45A7.idx differ Binary files old/nss_wrapper-1.1.11/.cache/clangd/index/nss_wrapper.c.496306141B70693D.idx and new/nss_wrapper-1.1.12/.cache/clangd/index/nss_wrapper.c.496306141B70693D.idx differ Binary files old/nss_wrapper-1.1.11/.cache/clangd/index/test_getaddrinfo.c.641BB471F444137A.idx and new/nss_wrapper-1.1.12/.cache/clangd/index/test_getaddrinfo.c.641BB471F444137A.idx differ Binary files old/nss_wrapper-1.1.11/.cache/clangd/index/test_gethostby_name_addr.c.C9C460E7372D7C61.idx and new/nss_wrapper-1.1.12/.cache/clangd/index/test_gethostby_name_addr.c.C9C460E7372D7C61.idx differ Binary files old/nss_wrapper-1.1.11/.cache/clangd/index/test_gethostent.c.FDE119456A174D8F.idx and new/nss_wrapper-1.1.12/.cache/clangd/index/test_gethostent.c.FDE119456A174D8F.idx differ Binary files old/nss_wrapper-1.1.11/.cache/clangd/index/test_getnameinfo.c.779E41D17A149E05.idx and new/nss_wrapper-1.1.12/.cache/clangd/index/test_getnameinfo.c.779E41D17A149E05.idx differ Binary files old/nss_wrapper-1.1.11/.cache/clangd/index/test_getpwuid_module.c.13413495523E694E.idx and new/nss_wrapper-1.1.12/.cache/clangd/index/test_getpwuid_module.c.13413495523E694E.idx differ Binary files old/nss_wrapper-1.1.11/.cache/clangd/index/test_nwrap_disabled.c.59E63F9B2D58E517.idx and new/nss_wrapper-1.1.12/.cache/clangd/index/test_nwrap_disabled.c.59E63F9B2D58E517.idx differ Binary files old/nss_wrapper-1.1.11/.cache/clangd/index/test_nwrap_vector.c.6DA36926E43E358A.idx and new/nss_wrapper-1.1.12/.cache/clangd/index/test_nwrap_vector.c.6DA36926E43E358A.idx differ Binary files old/nss_wrapper-1.1.11/.cache/clangd/index/test_shadow.c.85DFA55943F2551B.idx and new/nss_wrapper-1.1.12/.cache/clangd/index/test_shadow.c.85DFA55943F2551B.idx differ Binary files old/nss_wrapper-1.1.11/.cache/clangd/index/testsuite.c.AF64C06B860D31A7.idx and new/nss_wrapper-1.1.12/.cache/clangd/index/testsuite.c.AF64C06B860D31A7.idx differ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nss_wrapper-1.1.11/CHANGELOG new/nss_wrapper-1.1.12/CHANGELOG --- old/nss_wrapper-1.1.11/CHANGELOG 2020-04-02 12:21:24.000000000 +0200 +++ new/nss_wrapper-1.1.12/CHANGELOG 2022-06-24 10:09:57.000000000 +0200 @@ -1,6 +1,12 @@ ChangeLog ========== +version 1.1.12 (released 2022-06-24) + * Added (de)contructor support on AIX with pragma init/finish + * Fixed possible crash in getaddrinfo() + * Fixed issues with processes closing all fds when forking + * Fixed issues with setgrent() and endpwent() nss module support + version 1.1.11 (released 2020-04-02) * Fixed strict aliasing issues on armv7hl (32bit) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nss_wrapper-1.1.11/CMakeLists.txt new/nss_wrapper-1.1.12/CMakeLists.txt --- old/nss_wrapper-1.1.11/CMakeLists.txt 2020-04-02 12:21:24.000000000 +0200 +++ new/nss_wrapper-1.1.12/CMakeLists.txt 2022-06-24 10:09:57.000000000 +0200 @@ -11,7 +11,7 @@ include(DefineCMakeDefaults) include(DefineCompilerFlags) -project(nss_wrapper VERSION 1.1.11 LANGUAGES C) +project(nss_wrapper VERSION 1.1.12 LANGUAGES C) # global needed variables set(APPLICATION_NAME ${PROJECT_NAME}) @@ -25,7 +25,7 @@ # Increment PATCH. set(LIBRARY_VERSION_MAJOR 0) set(LIBRARY_VERSION_MINOR 3) -set(LIBRARY_VERSION_PATCH 1) +set(LIBRARY_VERSION_PATCH 2) set(LIBRARY_VERSION "${LIBRARY_VERSION_MAJOR}.${LIBRARY_VERSION_MINOR}.${LIBRARY_VERSION_PATCH}") set(LIBRARY_SOVERSION ${LIBRARY_VERSION_MAJOR}) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nss_wrapper-1.1.11/ConfigureChecks.cmake new/nss_wrapper-1.1.12/ConfigureChecks.cmake --- old/nss_wrapper-1.1.11/ConfigureChecks.cmake 2020-03-19 10:51:48.000000000 +0100 +++ new/nss_wrapper-1.1.12/ConfigureChecks.cmake 2021-11-08 15:14:51.000000000 +0100 @@ -263,6 +263,32 @@ return 0; }" HAVE_DESTRUCTOR_ATTRIBUTE) +check_c_source_compiles(" +#pragma init (test_constructor) +void test_constructor(void); + +void test_constructor(void) +{ + return; +} + +int main(void) { + return 0; +}" HAVE_PRAGMA_INIT) + +check_c_source_compiles(" +#pragma fini (test_destructor) +void test_destructor(void); + +void test_destructor(void) +{ + return; +} + +int main(void) { + return 0; +}" HAVE_PRAGMA_FINI) + find_library(DLFCN_LIBRARY dl) if (DLFCN_LIBRARY) list(APPEND _REQUIRED_LIBRARIES ${DLFCN_LIBRARY}) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nss_wrapper-1.1.11/config.h.cmake new/nss_wrapper-1.1.12/config.h.cmake --- old/nss_wrapper-1.1.11/config.h.cmake 2020-03-19 10:51:48.000000000 +0100 +++ new/nss_wrapper-1.1.12/config.h.cmake 2021-11-08 15:14:51.000000000 +0100 @@ -104,6 +104,8 @@ #cmakedefine HAVE_ATTRIBUTE_PRINTF_FORMAT 1 #cmakedefine HAVE_CONSTRUCTOR_ATTRIBUTE 1 #cmakedefine HAVE_DESTRUCTOR_ATTRIBUTE 1 +#cmakedefine HAVE_PRAGMA_INIT 1 +#cmakedefine HAVE_PRAGMA_FINI 1 /*************************** ENDIAN *****************************/ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nss_wrapper-1.1.11/src/nss_wrapper.c new/nss_wrapper-1.1.12/src/nss_wrapper.c --- old/nss_wrapper-1.1.11/src/nss_wrapper.c 2020-04-02 12:21:24.000000000 +0200 +++ new/nss_wrapper-1.1.12/src/nss_wrapper.c 2022-06-24 10:09:57.000000000 +0200 @@ -1070,7 +1070,14 @@ static bool nwrap_gr_parse_line(struct nwrap_cache *nwrap, char *line); static void nwrap_gr_unload(struct nwrap_cache *nwrap); +#if ! defined(HAVE_CONSTRUCTOR_ATTRIBUTE) && defined(HAVE_PRAGMA_INIT) +/* xlC and other oldschool compilers support (only) this */ +#pragma init (nwrap_constructor) +#endif void nwrap_constructor(void) CONSTRUCTOR_ATTRIBUTE; +#if ! defined(HAVE_DESTRUCTOR_ATTRIBUTE) && defined(HAVE_PRAGMA_FINI) +#pragma fini (nwrap_destructor) +#endif void nwrap_destructor(void) DESTRUCTOR_ATTRIBUTE; /********************************************************* @@ -2129,7 +2136,21 @@ } ret = fstat(nwrap->fd, &st); - if (ret != 0) { + if (ret != 0 && errno == EBADF && retried == false) { + /* maybe something closed the fd on our behalf */ + NWRAP_LOG(NWRAP_LOG_TRACE, + "fstat(%s) - %d:%s - reopen", + nwrap->path, + ret, + strerror(errno)); + retried = true; + memset(&nwrap->st, 0, sizeof(nwrap->st)); + fclose(nwrap->fp); + nwrap->fp = NULL; + nwrap->fd = -1; + goto reopen; + } + else if (ret != 0) { NWRAP_LOG(NWRAP_LOG_ERROR, "fstat(%s) - %d:%s", nwrap->path, @@ -4070,6 +4091,10 @@ } name_len = strlen(name); + if (name_len == 0) { + return EAI_NONAME; + } + if (name_len < sizeof(canon_name) && name[name_len - 1] == '.') { memcpy(canon_name, name, name_len - 1); canon_name[name_len] = '\0'; @@ -4462,7 +4487,7 @@ static void nwrap_module_endpwent(struct nwrap_backend *b) { - if (b->symbols->_nss_endpwent.f) { + if (b->symbols->_nss_endpwent.f == NULL) { return; } @@ -4634,7 +4659,7 @@ static void nwrap_module_setgrent(struct nwrap_backend *b) { - if (b->symbols->_nss_setgrent.f) { + if (b->symbols->_nss_setgrent.f == NULL) { return; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nss_wrapper-1.1.11/tests/test_getpwuid_module.c new/nss_wrapper-1.1.12/tests/test_getpwuid_module.c --- old/nss_wrapper-1.1.11/tests/test_getpwuid_module.c 2020-04-02 12:21:24.000000000 +0200 +++ new/nss_wrapper-1.1.12/tests/test_getpwuid_module.c 2021-11-08 15:14:51.000000000 +0100 @@ -4,6 +4,7 @@ #include <stddef.h> #include <setjmp.h> #include <cmocka.h> +#include <unistd.h> #include <pwd.h> @@ -22,12 +23,36 @@ assert_int_equal(pwd->pw_gid, id); } +static void test_nwrap_passwd_closed_handles(void **state) +{ + struct passwd *pwd; + uid_t id = 424242; + long maxfd; + + (void) state; /* unused */ + + pwd = getpwuid(id); + assert_non_null(pwd); + + maxfd = sysconf(_SC_OPEN_MAX); + if (maxfd < 0) { + maxfd = 1024; + } + for (long fd = 3; fd < maxfd; fd++) { + close(fd); + } + + pwd = getpwuid(id); + assert_non_null(pwd); +} + int main(void) { int rc; const struct CMUnitTest tests[] = { cmocka_unit_test(test_nwrap_passwd), + cmocka_unit_test(test_nwrap_passwd_closed_handles), }; rc = cmocka_run_group_tests(tests, NULL, NULL);
