Hello community,

here is the log from the commit of package glibc for openSUSE:Factory checked 
in at 2013-06-19 14:43:49
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/glibc (Old)
 and      /work/SRC/openSUSE:Factory/.glibc.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "glibc"

Changes:
--------
--- /work/SRC/openSUSE:Factory/glibc/glibc-testsuite.changes    2013-06-11 
09:27:22.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.glibc.new/glibc-testsuite.changes       
2013-06-19 14:43:50.000000000 +0200
@@ -1,0 +2,5 @@
+Mon Jun 17 09:49:24 UTC 2013 - sch...@suse.de
+
+- nscd-netgroup.patch: Fix handling of netgroup cache in nscd (bnc#819524)
+
+-------------------------------------------------------------------
glibc-utils.changes: same change
glibc.changes: same change

New:
----
  nscd-netgroup.patch

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ glibc-testsuite.spec ++++++
--- /var/tmp/diff_new_pack.KW1YGo/_old  2013-06-19 14:43:51.000000000 +0200
+++ /var/tmp/diff_new_pack.KW1YGo/_new  2013-06-19 14:43:51.000000000 +0200
@@ -255,6 +255,8 @@
 Patch1004:      regexp-overrun.patch
 # PATCH-FIX-UPSTREAM Fix stack overflow in getaddrinfo with many results
 Patch1005:      getaddrinfo-overflow.patch
+# PATCH-FIX-UPSTREAM Fix handling of netgroup cache in nscd
+Patch1006:      nscd-netgroup.patch
 
 ### 
 # Patches awaiting upstream approval
@@ -483,6 +485,7 @@
 %patch1003 -p1
 %patch1004 -p1
 %patch1005 -p1
+%patch1006 -p1
 
 # XXX Disable, it breaks the testsuite, test elf/tst-audit2 
 # %patch2008 -p1

glibc-utils.spec: same change
glibc.spec: same change

++++++ nscd-netgroup.patch ++++++
2013-06-11  Andreas Schwab  <sch...@suse.de>

        [BZ #15577]
        * nscd/connections.c (nscd_run_worker): Always zero-terminate key.
        * nscd/netgroupcache.c (addgetnetgrentX): Properly handle absent
        values in the triple.
        * nscd/nscd_netgroup.c (__nscd_setnetgrent): Include zero
        terminator in the group key.

Index: glibc-2.17/nscd/connections.c
===================================================================
--- glibc-2.17.orig/nscd/connections.c
+++ glibc-2.17/nscd/connections.c
@@ -1762,7 +1762,7 @@ nscd_run_worker (void *p)
       else
        {
          /* Get the key.  */
-         char keybuf[MAXKEYLEN];
+         char keybuf[MAXKEYLEN + 1];
 
          if (__builtin_expect (TEMP_FAILURE_RETRY (read (fd, keybuf,
                                                          req.key_len))
@@ -1774,6 +1774,7 @@ nscd_run_worker (void *p)
                         strerror_r (errno, buf, sizeof (buf)));
              goto close_and_out;
            }
+         keybuf[req.key_len] = '\0';
 
          if (__builtin_expect (debug_level, 0) > 0)
            {
Index: glibc-2.17/nscd/netgroupcache.c
===================================================================
--- glibc-2.17.orig/nscd/netgroupcache.c
+++ glibc-2.17/nscd/netgroupcache.c
@@ -192,18 +192,26 @@ addgetnetgrentX (struct database_dyn *db
                            const char *nuser = data.val.triple.user;
                            const char *ndomain = data.val.triple.domain;
 
-                           if (data.val.triple.host > data.val.triple.user
-                               || data.val.triple.user > 
data.val.triple.domain)
+                           if (nhost == NULL || nuser == NULL || ndomain == 
NULL
+                               || nhost > nuser || nuser > ndomain)
                              {
-                               const char *last = MAX (nhost,
-                                                       MAX (nuser, ndomain));
-                               size_t bufused = (last + strlen (last) + 1
-                                                 - buffer);
+                               const char *last = nhost;
+                               if (last == NULL
+                                   || (nuser != NULL && nuser > last))
+                                 last = nuser;
+                               if (last == NULL
+                                   || (ndomain != NULL && ndomain > last))
+                                 last = ndomain;
+
+                               size_t bufused
+                                 = (last == NULL
+                                    ? buffilled
+                                    : last + strlen (last) + 1 - buffer);
 
                                /* We have to make temporary copies.  */
-                               size_t hostlen = strlen (nhost) + 1;
-                               size_t userlen = strlen (nuser) + 1;
-                               size_t domainlen = strlen (ndomain) + 1;
+                               size_t hostlen = strlen (nhost ?: "") + 1;
+                               size_t userlen = strlen (nuser ?: "") + 1;
+                               size_t domainlen = strlen (ndomain ?: "") + 1;
                                size_t needed = hostlen + userlen + domainlen;
 
                                if (buflen - req->key_len - bufused < needed)
@@ -226,11 +234,11 @@ addgetnetgrentX (struct database_dyn *db
                                  }
 
                                nhost = memcpy (buffer + bufused,
-                                               nhost, hostlen);
+                                               nhost ?: "", hostlen);
                                nuser = memcpy ((char *) nhost + hostlen,
-                                               nuser, userlen);
+                                               nuser ?: "", userlen);
                                ndomain = memcpy ((char *) nuser + userlen,
-                                                 ndomain, domainlen);
+                                                 ndomain ?: "", domainlen);
                              }
 
                            char *wp = buffer + buffilled;
Index: glibc-2.17/nscd/nscd_netgroup.c
===================================================================
--- glibc-2.17.orig/nscd/nscd_netgroup.c
+++ glibc-2.17/nscd/nscd_netgroup.c
@@ -48,7 +48,7 @@ __nscd_setnetgrent (const char *group, s
 {
   int gc_cycle;
   int nretries = 0;
-  size_t group_len = strlen (group);
+  size_t group_len = strlen (group) + 1;
 
   /* If the mapping is available, try to search there instead of
      communicating with the nscd.  */
-- 
To unsubscribe, e-mail: opensuse-commit+unsubscr...@opensuse.org
For additional commands, e-mail: opensuse-commit+h...@opensuse.org

Reply via email to