Index: suckless-tools-39/slock/Makefile =================================================================== --- suckless-tools-39.orig/slock/Makefile 2012-01-23 11:59:50.186494839 +0100 +++ suckless-tools-39/slock/Makefile 2012-01-23 11:59:54.258583809 +0100 @@ -41,7 +41,8 @@ @mkdir -p ${DESTDIR}${PREFIX}/bin @cp -f slock ${DESTDIR}${PREFIX}/bin @chmod 755 ${DESTDIR}${PREFIX}/bin/slock - @chmod u+s ${DESTDIR}${PREFIX}/bin/slock + @chgrp shadow ${DESTDIR}${PREFIX}/bin/slock + @chmod g+s ${DESTDIR}${PREFIX}/bin/slock uninstall: @echo removing executable file from ${DESTDIR}${PREFIX}/bin Index: suckless-tools-39/slock/slock.c =================================================================== --- suckless-tools-39.orig/slock/slock.c 2008-07-29 20:22:46.000000000 +0200 +++ suckless-tools-39/slock/slock.c 2012-01-23 13:03:08.275556534 +0100 @@ -38,16 +38,17 @@ const char *rval; struct passwd *pw; - if(geteuid() != 0) - die("slock: cannot retrieve password entry (make sure to suid slock)\n"); pw = getpwuid(getuid()); + if(!pw) + die("slock: cannot retrieve password entry (may you need to suid or sgid slock?)\n"); endpwent(); rval = pw->pw_passwd; - -#if HAVE_SHADOW_H +#ifdef HAVE_SHADOW_H { struct spwd *sp; sp = getspnam(getenv("USER")); + if(!sp) + die("slock: cannot retrieve shadow entry (may you need to suid or sgid slock?)\n"); endspent(); rval = sp->sp_pwdp; }