mirror of
git://git.musl-libc.org/musl
synced 2024-12-14 18:55:23 +00:00
fix erroneous return of partial username matches by getspnam[_r]
when using /etc/shadow (rather than tcb) as its backend, getspnam_r matched any username starting with the caller-provided string rather than requiring an exact match. in practice this seems to have affected only systems where one valid username is a prefix for another valid username, and where the longer username appears first in the shadow file.
This commit is contained in:
parent
63cac4e29a
commit
ecb608192a
@ -98,7 +98,7 @@ int getspnam_r(const char *name, struct spwd *sp, char *buf, size_t size, struct
|
|||||||
|
|
||||||
pthread_cleanup_push(cleanup, f);
|
pthread_cleanup_push(cleanup, f);
|
||||||
while (fgets(buf, size, f) && (k=strlen(buf))>0) {
|
while (fgets(buf, size, f) && (k=strlen(buf))>0) {
|
||||||
if (skip || strncmp(name, buf, l)) {
|
if (skip || strncmp(name, buf, l) || buf[l]!=':') {
|
||||||
skip = buf[k-1] != '\n';
|
skip = buf[k-1] != '\n';
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user