end{pw,sp}ent() can only be called after get{pw,sp}ent()
Calling them unconditionally can result in memory corruption.
This commit is contained in:
parent
8745098fa4
commit
4339b507af
2
slock.c
2
slock.c
|
@ -73,7 +73,6 @@ getpw(void) { /* only run as root */
|
||||||
else
|
else
|
||||||
die("slock: cannot retrieve password entry (make sure to suid or sgid slock)\n");
|
die("slock: cannot retrieve password entry (make sure to suid or sgid slock)\n");
|
||||||
}
|
}
|
||||||
endpwent();
|
|
||||||
rval = pw->pw_passwd;
|
rval = pw->pw_passwd;
|
||||||
|
|
||||||
#if HAVE_SHADOW_H
|
#if HAVE_SHADOW_H
|
||||||
|
@ -82,7 +81,6 @@ getpw(void) { /* only run as root */
|
||||||
sp = getspnam(getenv("USER"));
|
sp = getspnam(getenv("USER"));
|
||||||
if(!sp)
|
if(!sp)
|
||||||
die("slock: cannot retrieve shadow entry (make sure to suid or sgid slock)\n");
|
die("slock: cannot retrieve shadow entry (make sure to suid or sgid slock)\n");
|
||||||
endspent();
|
|
||||||
rval = sp->sp_pwdp;
|
rval = sp->sp_pwdp;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue