Browse Source

end{pw,sp}ent() can only be called after get{pw,sp}ent()

Calling them unconditionally can result in memory corruption.
master
sin 10 years ago
parent
commit
4339b507af
  1. 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…
Cancel
Save