diff --git a/slock.c b/slock.c index f87d03e..e47807b 100644 --- a/slock.c +++ b/slock.c @@ -80,7 +80,8 @@ getpw(void) { /* only run as root */ #endif /* drop privileges */ - if(setgid(pw->pw_gid) < 0 || setuid(pw->pw_uid) < 0) + if (geteuid() == 0 + && ((getegid() != pw->pw_gid && setgid(pw->pw_gid) < 0) || setuid(pw->pw_uid) < 0)) die("slock: cannot drop privileges\n"); return rval; }