about summary refs log tree commit diff
path: root/nss/nss_database.c
diff options
context:
space:
mode:
authorDJ Delorie <dj@redhat.com>2020-12-09 21:46:30 -0500
committerDJ Delorie <dj@redhat.com>2020-12-14 12:19:43 -0500
commitd2e929a907914e233d001d1dd5e3143e84fa69e0 (patch)
treee0fc726fa628727fee23a86a6053f9107502c84b /nss/nss_database.c
parent2ee7711bdd7de9dd30073b223ce29d5cd50320f6 (diff)
downloadglibc-d2e929a907914e233d001d1dd5e3143e84fa69e0.tar.gz
glibc-d2e929a907914e233d001d1dd5e3143e84fa69e0.tar.xz
glibc-d2e929a907914e233d001d1dd5e3143e84fa69e0.zip
nsswitch: handle missing actions properly
Some internal functions need to know if a database has a nonzero
list of actions; success getting the database does not guarantee
that.  Add checks for such as needed.

Skip the ":" in each nsswitch.conf line so as not to add a dummy
action libnss_:.so

See also https://bugzilla.redhat.com/show_bug.cgi?id=1906066

Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
Diffstat (limited to 'nss/nss_database.c')
-rw-r--r--nss/nss_database.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/nss/nss_database.c b/nss/nss_database.c
index 6ff537152f..6a969ecad8 100644
--- a/nss/nss_database.c
+++ b/nss/nss_database.c
@@ -212,7 +212,8 @@ process_line (struct nss_database_data *data, char *line)
   if (line[0] == '\0' || name == line)
     /* Syntax error.  Skip this line.  */
     return true;
-  *line++ = '\0';
+  while (line[0] != '\0' && (isspace (line[0]) || line[0] == ':'))
+    *line++ = '\0';
 
   int db = name_to_database_index (name);
   if (db < 0)