Hello community,

here is the log from the commit of package glibc for openSUSE:Factory checked 
in at 2016-07-03 12:17:24
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
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    2016-06-05 
14:17:30.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.glibc.new/glibc-testsuite.changes       
2016-07-03 12:17:26.000000000 +0200
@@ -1,0 +2,6 @@
+Thu Jun  9 09:17:10 UTC 2016 - [email protected]
+
+- nscd-gc-crash.patch: Fix nscd assertion failure in gc (bsc#965699, BZ
+  #19755)
+
+-------------------------------------------------------------------
@@ -298 +304 @@
-    bsc#940195 bsc#940332
+    bsc#940195 bsc#940332 bsc#944494 bsc#968787
@@ -444 +450 @@
-  * CVE-2013-7423 bsc#915526 bsc#934084
+  * CVE-2013-7423 bsc#915526 bsc#934084 bsc#973010
@@ -468,0 +475 @@
+  (bsc#967190)
glibc-utils.changes: same change
glibc.changes: same change

New:
----
  nscd-gc-crash.patch

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

Other differences:
------------------
++++++ glibc-testsuite.spec ++++++
--- /var/tmp/diff_new_pack.GAbNv0/_old  2016-07-03 12:17:28.000000000 +0200
+++ /var/tmp/diff_new_pack.GAbNv0/_new  2016-07-03 12:17:28.000000000 +0200
@@ -308,6 +308,8 @@
 Patch1055:      0056-Fix-strfmon_l-Use-specified-locale-for-number-format.patch
 # PATCH-FIX-UPSTREAM sunrpc: Do not use alloca in clntudp_call (CVE-2016-4429, 
BZ #20112)
 Patch1056:      clntudp-call-alloca.patch
+# PATCH-FIX-UPSTREAM Fix nscd assertion failure in gc (BZ #19755)
+Patch1057:      nscd-gc-crash.patch
 
 ### 
 # Patches awaiting upstream approval
@@ -587,6 +589,7 @@
 %patch1054 -p1
 %patch1055 -p1
 %patch1056 -p1
+%patch1057 -p1
 
 %patch2000 -p1
 %patch2001 -p1
@@ -872,6 +875,8 @@
     done < $sum
   done
   set -$o
+  # Fail build if there where compilation errors during testsuite run
+  test -f tests.sum
 }
 %else
 # This has to pass on all platforms!

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



++++++ nscd-gc-crash.patch ++++++
        [BZ #19755]
        * nscd/pwdcache.c (cache_addpw): Lock prune_run_lock while adding
        new entries in auto-propagate mode.
        * nscd/grpcache.c (cache_addgr): Likewise.

Index: glibc-2.23/nscd/grpcache.c
===================================================================
--- glibc-2.23.orig/nscd/grpcache.c
+++ glibc-2.23/nscd/grpcache.c
@@ -205,10 +205,19 @@ cache_addgr (struct database_dyn *db, in
       dataset = NULL;
 
       if (he == NULL)
-       dataset = (struct dataset *) mempool_alloc (db, total + n, 1);
+       {
+         /* Prevent an INVALIDATE request from pruning the data between
+            the two calls to cache_add.  */
+         if (db->propagate)
+           pthread_mutex_lock (&db->prune_run_lock);
+         dataset = (struct dataset *) mempool_alloc (db, total + n, 1);
+       }
 
       if (dataset == NULL)
        {
+         if (he == NULL && db->propagate)
+           pthread_mutex_unlock (&db->prune_run_lock);
+
          /* We cannot permanently add the result in the moment.  But
             we can provide the result as is.  Store the data in some
             temporary memory.  */
@@ -396,6 +405,8 @@ cache_addgr (struct database_dyn *db, in
 
        out:
          pthread_rwlock_unlock (&db->lock);
+         if (he == NULL && db->propagate)
+           pthread_mutex_unlock (&db->prune_run_lock);
        }
     }
 
Index: glibc-2.23/nscd/pwdcache.c
===================================================================
--- glibc-2.23.orig/nscd/pwdcache.c
+++ glibc-2.23/nscd/pwdcache.c
@@ -198,10 +198,19 @@ cache_addpw (struct database_dyn *db, in
       dataset = NULL;
 
       if (he == NULL)
-       dataset = (struct dataset *) mempool_alloc (db, total + n, 1);
+       {
+         /* Prevent an INVALIDATE request from pruning the data between
+            the two calls to cache_add.  */
+         if (db->propagate)
+           pthread_mutex_lock (&db->prune_run_lock);
+         dataset = (struct dataset *) mempool_alloc (db, total + n, 1);
+       }
 
       if (dataset == NULL)
        {
+         if (he == NULL && db->propagate)
+           pthread_mutex_unlock (&db->prune_run_lock);
+
          /* We cannot permanently add the result in the moment.  But
             we can provide the result as is.  Store the data in some
             temporary memory.  */
@@ -374,6 +383,8 @@ cache_addpw (struct database_dyn *db, in
 
        out:
          pthread_rwlock_unlock (&db->lock);
+         if (he == NULL && db->propagate)
+           pthread_mutex_unlock (&db->prune_run_lock);
        }
     }
 

Reply via email to