diff --git a/glibc.changes b/glibc.changes index b719251..5498a8a 100644 --- a/glibc.changes +++ b/glibc.changes @@ -1,3 +1,9 @@ +------------------------------------------------------------------- +Wed Mar 7 09:14:55 UTC 2018 - schwab@suse.de + +- nss-database-multiple-dfn.patch: Fix multiple definitions of + __nss_*_database (BZ #22918) + ------------------------------------------------------------------- Thu Feb 22 15:10:32 UTC 2018 - fvogt@suse.com diff --git a/glibc.spec b/glibc.spec index d1464b7..61467eb 100644 --- a/glibc.spec +++ b/glibc.spec @@ -282,6 +282,8 @@ Patch306: glibc-fix-double-loopback.diff ### # PATCH-FIX-UPSTREAM Fix parsing flags in ELF64 files (BZ #22827) Patch1000: riscv-readelflib.patch +# PATCH-FIX-UPSTREAM Fix multiple definitions of __nss_*_database (BZ #22918) +Patch1001: nss-database-multiple-dfn.patch ### # Patches awaiting upstream approval @@ -492,6 +494,7 @@ mv crypt_blowfish-%crypt_bf_version/*.[chS] crypt/ %patch306 -p1 %patch1000 -p1 +%patch1001 -p1 %patch2000 -p1 %patch2004 -p1 diff --git a/nss-database-multiple-dfn.patch b/nss-database-multiple-dfn.patch new file mode 100644 index 0000000..7191c3f --- /dev/null +++ b/nss-database-multiple-dfn.patch @@ -0,0 +1,89 @@ +2018-03-03 Andreas Schwab + + [BZ #22918] + * nss/nsswitch.h (DEFINE_DATABASE): Don't define __nss_*_database. + * nss/nsswitch.c (DEFINE_DATABASE): Define __nss_*_database here. + * nscd/gai.c (__nss_hosts_database): Readd definition. + * posix/tst-rfc3484.c (__nss_hosts_database): Likewise. + * posix/tst-rfc3484-3.c (__nss_hosts_database): Likewise. + * posix/tst-rfc3484-2.c (__nss_hosts_database): Likewise. + +Index: glibc-2.27/nscd/gai.c +=================================================================== +--- glibc-2.27.orig/nscd/gai.c ++++ glibc-2.27/nscd/gai.c +@@ -45,3 +45,6 @@ + #ifdef HAVE_LIBIDN + # include + #endif ++ ++/* Some variables normally defined in libc. */ ++service_user *__nss_hosts_database attribute_hidden; +Index: glibc-2.27/nss/nsswitch.c +=================================================================== +--- glibc-2.27.orig/nss/nsswitch.c ++++ glibc-2.27/nss/nsswitch.c +@@ -62,7 +62,7 @@ static service_library *nss_new_service + + /* Declare external database variables. */ + #define DEFINE_DATABASE(name) \ +- extern service_user *__nss_##name##_database attribute_hidden; \ ++ service_user *__nss_##name##_database attribute_hidden; \ + weak_extern (__nss_##name##_database) + #include "databases.def" + #undef DEFINE_DATABASE +Index: glibc-2.27/nss/nsswitch.h +=================================================================== +--- glibc-2.27.orig/nss/nsswitch.h ++++ glibc-2.27/nss/nsswitch.h +@@ -226,10 +226,10 @@ libc_hidden_proto (__nss_hostname_digits + #define MAX_NR_ADDRS 48 + + /* Prototypes for __nss_*_lookup2 functions. */ +-#define DEFINE_DATABASE(arg) \ +- service_user *__nss_##arg##_database attribute_hidden; \ +- int __nss_##arg##_lookup2 (service_user **, const char *, \ +- const char *, void **); \ ++#define DEFINE_DATABASE(arg) \ ++ extern service_user *__nss_##arg##_database attribute_hidden; \ ++ int __nss_##arg##_lookup2 (service_user **, const char *, \ ++ const char *, void **); \ + libc_hidden_proto (__nss_##arg##_lookup2) + #include "databases.def" + #undef DEFINE_DATABASE +Index: glibc-2.27/posix/tst-rfc3484-2.c +=================================================================== +--- glibc-2.27.orig/posix/tst-rfc3484-2.c ++++ glibc-2.27/posix/tst-rfc3484-2.c +@@ -58,6 +58,7 @@ _res_hconf_init (void) + #undef USE_NSCD + #include "../sysdeps/posix/getaddrinfo.c" + ++service_user *__nss_hosts_database attribute_hidden; + + /* This is the beginning of the real test code. The above defines + (among other things) the function rfc3484_sort. */ +Index: glibc-2.27/posix/tst-rfc3484-3.c +=================================================================== +--- glibc-2.27.orig/posix/tst-rfc3484-3.c ++++ glibc-2.27/posix/tst-rfc3484-3.c +@@ -58,6 +58,7 @@ _res_hconf_init (void) + #undef USE_NSCD + #include "../sysdeps/posix/getaddrinfo.c" + ++service_user *__nss_hosts_database attribute_hidden; + + /* This is the beginning of the real test code. The above defines + (among other things) the function rfc3484_sort. */ +Index: glibc-2.27/posix/tst-rfc3484.c +=================================================================== +--- glibc-2.27.orig/posix/tst-rfc3484.c ++++ glibc-2.27/posix/tst-rfc3484.c +@@ -58,6 +58,7 @@ _res_hconf_init (void) + #undef USE_NSCD + #include "../sysdeps/posix/getaddrinfo.c" + ++service_user *__nss_hosts_database attribute_hidden; + + /* This is the beginning of the real test code. The above defines + (among other things) the function rfc3484_sort. */