]> git.pld-linux.org Git - packages/glibc.git/blobdiff - nss_crash.patch
add patch fixing firefox sandbox regression; rel 7
[packages/glibc.git] / nss_crash.patch
diff --git a/nss_crash.patch b/nss_crash.patch
new file mode 100644 (file)
index 0000000..489aacc
--- /dev/null
@@ -0,0 +1,31 @@
+diff --git a/nss/nss_database.c b/nss/nss_database.c
+index d56c5b798d..a0522ea7d2 100644
+--- a/nss/nss_database.c
++++ b/nss/nss_database.c
+@@ -424,17 +424,21 @@ nss_database_check_reload_and_get (struct nss_database_state *local,
+      errors here are very unlikely, but the chance that we're entering
+      a container is also very unlikely, so we err on the side of both
+      very unlikely things not happening at the same time.  */
+-  if (__stat64_time64 ("/", &str) != 0
+-      || (local->root_ino != 0
+-        && (str.st_ino != local->root_ino
+-            ||  str.st_dev != local->root_dev)))
+-    {
++  if (__stat64_time64 ("/", &str) != 0) {
++    __libc_lock_unlock (local->lock);
++    return false;
++  }
++
++  if (local->root_ino != 0 && (str.st_ino != local->root_ino
++                              || str.st_dev != local->root_dev))
++   {
+       /* Change detected; disable reloading and return current state.  */
+       atomic_store_release (&local->data.reload_disabled, 1);
+       *result = local->data.services[database_index];
+       __libc_lock_unlock (local->lock);
+       return true;
+     }
++
+   local->root_ino = str.st_ino;
+   local->root_dev = str.st_dev;
+   __libc_lock_unlock (local->lock);
This page took 0.042125 seconds and 4 git commands to generate.