Hello community, here is the log from the commit of package glibc for openSUSE:12.2 checked in at 2012-07-09 13:27:44 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:12.2/glibc (Old) and /work/SRC/openSUSE:12.2/.glibc.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "glibc", Maintainer is "m...@suse.com" Changes: -------- --- /work/SRC/openSUSE:12.2/glibc/glibc.changes 2012-07-03 20:26:30.000000000 +0200 +++ /work/SRC/openSUSE:12.2/.glibc.new/glibc.changes 2012-07-09 13:27:45.000000000 +0200 @@ -1,0 +2,7 @@ +Wed Jul 4 13:36:17 UTC 2012 - a...@suse.de + +- Add glibc-2.16-getaddrinfo-buffer.patch to not use a too small + buffer for dns queries on 64-bit systems (bso#14307,bso#13904). +- Fix getaddrinfo-ipv6-sanity.diff (bnc#767125). + +------------------------------------------------------------------- New: ---- glibc-2.16-getaddrinfo-buffer.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ glibc.spec ++++++ --- /var/tmp/diff_new_pack.gdGd0h/_old 2012-07-09 13:27:46.000000000 +0200 +++ /var/tmp/diff_new_pack.gdGd0h/_new 2012-07-09 13:27:46.000000000 +0200 @@ -290,6 +290,8 @@ Patch1019: tr_TR.patch # PATCH-FIX-UPSTREAM implement *context on ARM - ag...@suse.de Patch1020: glibc-2.16-arm-context.patch +# PATCH-FIX-UPSTREAM Fix dns buffer - a...@suse.de +Patch1021: glibc-2.16-getaddrinfo-buffer.patch ### # Patches awaiting upstream approval @@ -564,6 +566,7 @@ %patch1018 -p1 %patch1019 -p1 %patch1020 -p1 +%patch1021 -p1 %patch2001 -p1 %patch2004 -p1 ++++++ getaddrinfo-ipv6-sanity.diff ++++++ --- /var/tmp/diff_new_pack.gdGd0h/_old 2012-07-09 13:27:46.000000000 +0200 +++ /var/tmp/diff_new_pack.gdGd0h/_new 2012-07-09 13:27:46.000000000 +0200 @@ -1,10 +1,8 @@ -References: bnc#361697 - -Index: glibc-2.15/sysdeps/posix/getaddrinfo.c -=================================================================== ---- glibc-2.15.orig/sysdeps/posix/getaddrinfo.c -+++ glibc-2.15/sysdeps/posix/getaddrinfo.c -@@ -269,7 +269,7 @@ extern service_user *__nss_hosts_databas +diff --git a/sysdeps/posix/getaddrinfo.c b/sysdeps/posix/getaddrinfo.c +index 1a023f9..c8af8b9 100644 +--- a/sysdeps/posix/getaddrinfo.c ++++ b/sysdeps/posix/getaddrinfo.c +@@ -269,7 +269,7 @@ extern service_user *__nss_hosts_database attribute_hidden; static int gaih_inet (const char *name, const struct gaih_service *service, const struct addrinfo *req, struct addrinfo **pai, @@ -13,7 +11,7 @@ { const struct gaih_typeproto *tp = gaih_inet_typeproto; struct gaih_servtuple *st = (struct gaih_servtuple *) &nullserv; -@@ -832,7 +832,10 @@ gaih_inet (const char *name, const struc +@@ -832,7 +832,10 @@ gaih_inet (const char *name, const struct gaih_service *service, no_data = 0; nss_gethostbyname4_r fct4 = __nss_lookup_function (nip, "gethostbyname4_r"); @@ -25,7 +23,7 @@ { int herrno; -@@ -935,7 +938,7 @@ gaih_inet (const char *name, const struc +@@ -935,7 +938,7 @@ gaih_inet (const char *name, const struct gaih_service *service, if (fct != NULL) { if (req->ai_family == AF_INET6 @@ -34,11 +32,15 @@ { gethosts (AF_INET6, struct in6_addr); no_inet6_data = no_data; -@@ -2418,7 +2421,7 @@ getaddrinfo (const char *name, const cha +@@ -2418,7 +2421,11 @@ getaddrinfo (const char *name, const char *service, if (hints->ai_family == AF_UNSPEC || hints->ai_family == AF_INET || hints->ai_family == AF_INET6) { - last_i = gaih_inet (name, pservice, hints, end, &naddrs); ++ if (!check_pf_called) ++ __check_pf (&seen_ipv4, &seen_ipv6, &in6ai, &in6ailen); ++ check_pf_called = true; ++ + last_i = gaih_inet (name, pservice, hints, end, &naddrs, seen_ipv6); if (last_i != 0) { ++++++ glibc-2.16-getaddrinfo-buffer.patch ++++++ 2012-07-02 Jeroen van Bemmel <jvb...@gmail.com> [BZ #14307] [BZ #13904] * sysdeps/posix/getaddrinfo.c ( gaih_inet ): Increase the size of the temporary buffer used to invoke __gethostbyname2_r, __gethostbyaddr_r and gethostbyname4_r to make room for struct host_data / struct gaih_addrtuple. * resolv/nss_dns/dns-host.c (global scope): Move definition of implementation constants MAX_NR_ALIASES and MAX_NR_ADDRS to header file nss/nsswitch.h. * nss/nsswitch.h (global scope): Add definition of implementation constants MAX_NR_ALIASES and MAX_NR_ADDRS (moved from resolv/nss_dns/dns-host.c). diff --git glibc/nss/nsswitch.h glibc/nss/nsswitch.h index 90e208b..8965819 100644 --- glibc/nss/nsswitch.h +++ glibc/nss/nsswitch.h @@ -198,4 +198,8 @@ extern int __nss_hostname_digits_dots (const char *name, int *h_errnop); libc_hidden_proto (__nss_hostname_digits_dots) +/* Maximum number of aliases we allow. */ +#define MAX_NR_ALIASES 48 +#define MAX_NR_ADDRS 48 + #endif /* nsswitch.h */ diff --git glibc/resolv/nss_dns/dns-host.c glibc/resolv/nss_dns/dns-host.c index a924d40..6b62c05 100644 --- glibc/resolv/nss_dns/dns-host.c +++ glibc/resolv/nss_dns/dns-host.c @@ -88,10 +88,6 @@ #define RESOLVSORT -/* Maximum number of aliases we allow. */ -#define MAX_NR_ALIASES 48 -#define MAX_NR_ADDRS 48 - #if PACKETSZ > 65536 # define MAXPACKET PACKETSZ #else diff --git glibc/sysdeps/posix/getaddrinfo.c glibc/sysdeps/posix/getaddrinfo.c index 2eca2ae..efb0423 100644 --- glibc/sysdeps/posix/getaddrinfo.c +++ glibc/sysdeps/posix/getaddrinfo.c @@ -568,7 +568,8 @@ gaih_inet (const char *name, const struct gaih_service *service, IPv6 scope ids. */ if (req->ai_family == AF_INET) { - size_t tmpbuflen = 512; + /* Allocate additional room for struct host_data in getanswer_r */ + size_t tmpbuflen = 512 + MAX_NR_ALIASES * sizeof(char*) + 16 * sizeof(char); assert (tmpbuf == NULL); tmpbuf = alloca_account (tmpbuflen, alloca_used); int rc; @@ -811,7 +812,7 @@ gaih_inet (const char *name, const struct gaih_service *service, old_res_options = _res.options; _res.options &= ~RES_USE_INET6; - size_t tmpbuflen = 1024; + size_t tmpbuflen = 1024 + sizeof(struct gaih_addrtuple); malloc_tmpbuf = !__libc_use_alloca (alloca_used + tmpbuflen); assert (tmpbuf == NULL); if (!malloc_tmpbuf) @@ -1113,7 +1114,9 @@ gaih_inet (const char *name, const struct gaih_service *service, struct hostent *h = NULL; int herrno; struct hostent th; - size_t tmpbuf2len = 512; + /* Add room for struct host_data in resolv/nss_dns/dns-host.c */ + size_t tmpbuf2len = 512 + (MAX_NR_ALIASES+MAX_NR_ADDRS+1)*sizeof(char*) + + 16 * sizeof(char); do { -- To unsubscribe, e-mail: opensuse-commit+unsubscr...@opensuse.org For additional commands, e-mail: opensuse-commit+h...@opensuse.org