login: Fix no-pam authorization regression
The list_match function handles EXCEPT entries through recursive
calls. It calls itself with NULL, which was then passed to strtok so
parsing continued at current position.
Replacing strtok with strsep, this means that EXCEPT entries never
match, because strsep(NULL, ...) always returns NULL, i.e. the
code treats everything after EXCEPT as non-existing.
Fix this by passing current list pointer to recursive call.
Fixes: 90afe61003 (2024-07-04; "lib/, src/: Use strsep(3) instead of strtok(3)")
Signed-off-by: Tobias Stoeckmann <tobias@stoeckmann.org>
This commit is contained in:
committed by
Alejandro Colomar
parent
15524dd613
commit
c45b076b1c
+1
-1
@@ -171,7 +171,7 @@ list_match(char *list, const char *item, bool (*match_fn)(char *, const char*))
|
||||
while ( (NULL != (tok = strsep(&list, sep)))
|
||||
&& (strcasecmp (tok, "EXCEPT") != 0))
|
||||
/* VOID */ ;
|
||||
if (tok == NULL || !list_match(NULL, item, match_fn)) {
|
||||
if (tok == NULL || !list_match(list, item, match_fn)) {
|
||||
return (match);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user