X-Git-Url: https://git.danieliu.xyz/?p=slock.git;a=blobdiff_plain;f=slock.c;h=d150009202c17f468fa7c6ff742ce738707d6b2d;hp=2dce109d531309c79a0687570f8cf0891db606e1;hb=f013cb264e654125c043ed637b7f47692376f967;hpb=5a5c581285e86fe53c9602c7e0fb7e19ec742391 diff --git a/slock.c b/slock.c index 2dce109..d150009 100644 --- a/slock.c +++ b/slock.c @@ -50,9 +50,9 @@ getpw(void) { /* only run as root */ const char *rval; struct passwd *pw; - if(geteuid() != 0) - die("cannot retrieve password entry (make sure to suid slock)"); pw = getpwuid(getuid()); + if(!pw) + die("cannot retrieve password entry (make sure to suid or sgid slock)"); endpwent(); rval = pw->pw_passwd; @@ -60,6 +60,8 @@ getpw(void) { /* only run as root */ { struct spwd *sp; sp = getspnam(getenv("USER")); + if(!sp) + die("slock: cannot retrieve shadow entry (make sure to suid or sgid slock)\n"); endspent(); rval = sp->sp_pwdp; }