login: prevent OOB read on illegal /etc/hushlogins
If the file /etc/hushlogins exists and a line starts with '\0', the login tools are prone to an off-by-one read. I see no reliability issue with this, as it would clearly need a hostile action from a system administrator. But for the sake of correctness, I've sent this patch nonetheless.
This commit is contained in:
parent
55a5fbbc33
commit
b0f97de5a4
|
@ -344,6 +344,7 @@ int get_hushlogin_status(struct passwd *pwd, int force_check)
|
||||||
continue; /* ignore errors... */
|
continue; /* ignore errors... */
|
||||||
|
|
||||||
while (ok == 0 && fgets(buf, sizeof(buf), f)) {
|
while (ok == 0 && fgets(buf, sizeof(buf), f)) {
|
||||||
|
if (buf[0] != '\0')
|
||||||
buf[strlen(buf) - 1] = '\0';
|
buf[strlen(buf) - 1] = '\0';
|
||||||
ok = !strcmp(buf, *buf == '/' ? pwd->pw_shell :
|
ok = !strcmp(buf, *buf == '/' ? pwd->pw_shell :
|
||||||
pwd->pw_name);
|
pwd->pw_name);
|
||||||
|
|
Loading…
Reference in New Issue