45 lines
1.3 KiB
Diff
45 lines
1.3 KiB
Diff
From 4b1bd2ab9318f680a355913987a0ba514cbcd0c9 Mon Sep 17 00:00:00 2001
|
|
From: Florian Weimer <fweimer@redhat.com>
|
|
Date: Fri, 13 Feb 2026 09:02:07 +0100
|
|
Subject: [PATCH] nss: Missing checks in __nss_configure_lookup,
|
|
__nss_database_get (bug 28940)
|
|
|
|
This avoids a null pointer dereference in the
|
|
nss_database_check_reload_and_get function, and assertion failures.
|
|
|
|
Reviewed-by: Sam James <sam@gentoo.org>
|
|
---
|
|
nss/nss_database.c | 7 ++++++-
|
|
1 file changed, 6 insertions(+), 1 deletion(-)
|
|
|
|
diff --git a/nss/nss_database.c b/nss/nss_database.c
|
|
index efe77aeaff..cd7c9f00ec 100644
|
|
--- a/nss/nss_database.c
|
|
+++ b/nss/nss_database.c
|
|
@@ -251,9 +251,12 @@ __nss_configure_lookup (const char *dbname, const char *service_line)
|
|
|
|
/* Force any load/cache/read whatever to happen, so we can override
|
|
it. */
|
|
- __nss_database_get (db, &result);
|
|
+ if (!__nss_database_get (db, &result))
|
|
+ return -1;
|
|
|
|
local = nss_database_state_get ();
|
|
+ if (local == NULL)
|
|
+ return -1;
|
|
|
|
result = __nss_action_parse (service_line);
|
|
if (result == NULL)
|
|
@@ -478,6 +481,8 @@ bool
|
|
__nss_database_get (enum nss_database db, nss_action_list *actions)
|
|
{
|
|
struct nss_database_state *local = nss_database_state_get ();
|
|
+ if (local == NULL)
|
|
+ return false;
|
|
return nss_database_check_reload_and_get (local, actions, db);
|
|
}
|
|
libc_hidden_def (__nss_database_get)
|
|
--
|
|
2.53.0
|
|
|