lib/nss.c: Fix use of uninitialized p

getline(3) might have never succeeded, in which case p is uninitialized
when used in strtok_r(3).

Link: <https://github.com/shadow-maint/shadow/pull/737#discussion_r1206007358>
Cc: Serge Hallyn <serge@hallyn.com>
Signed-off-by: Alejandro Colomar <alx@kernel.org>
This commit is contained in:
Alejandro Colomar
2023-05-31 12:19:33 +02:00
committed by Serge Hallyn
parent 54ba4814ae
commit 848a95329c

View File

@@ -69,7 +69,8 @@ void nss_init(const char *nsswitch_path) {
atomic_store(&nss_init_completed, true);
return;
}
while ((getline(&line, &len, nssfp)) != -1) {
p = NULL;
while (getline(&line, &len, nssfp) != -1) {
if (line[0] == '#')
continue;
if (strlen(line) < 8)
@@ -82,6 +83,9 @@ void nss_init(const char *nsswitch_path) {
if (*p != '\0')
break;
}
if (p == NULL) {
goto null_subid;
}
token = strtok_r(p, " \n\t", &saveptr);
if (token == NULL) {
fprintf(shadow_logfd, "No usable subid NSS module found, using files\n");