summaryrefslogtreecommitdiff
blob: 32fd8a61cd38baf23c9b5c9fb31a74df7eaaf074 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
From ce54d71af85a735b3ddf29bde1f6ee6e0844d352 Mon Sep 17 00:00:00 2001
From: Adhemerval Zanella <adhemerval.zanella@linaro.org>
Date: Sat, 12 Feb 2022 19:40:58 +0100
Subject: [PATCH 13/14] Fix segfault in getpwuid when stat fails (BZ #28752)

[azanella proposed this patch to sam when discussing the issue,
 but it's not anywhere upstream yet- dilfridge]

Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=28752
Bug: https://bugs.gentoo.org/828070
(cherry picked from commit 1bcdcd4fec9bfe2f1d3fef67a43825903f6a5f2b)
---
 nss/nss_database.c | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/nss/nss_database.c b/nss/nss_database.c
index d56c5b798d..133682b858 100644
--- a/nss/nss_database.c
+++ b/nss/nss_database.c
@@ -424,10 +424,11 @@ 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)
+    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);
-- 
2.35.1