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

Reply via email to