#include <bsd_auth.h>
#endif
+#include "config.h"
+
typedef struct {
int screen;
Window root, win;
errno = 0;
pw = getpwuid(getuid());
- if (errno)
- die("slock: getpwuid: %s\n", strerror(errno));
- else if (!pw)
- die("slock: cannot retrieve password entry (make sure to suid or sgid slock)\n");
- endpwent();
+ if (!pw) {
+ if (errno)
+ die("slock: getpwuid: %s\n", strerror(errno));
+ else
+ die("slock: cannot retrieve password entry (make sure to suid or sgid slock)\n");
+ }
rval = pw->pw_passwd;
#if HAVE_SHADOW_H
- if (strlen(rval) >= 1) { /* kludge, assumes pw placeholder entry has len >= 1 */
+ if (rval[0] == 'x' && rval[1] == '\0') {
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;
}
#endif
--len;
break;
default:
- if(num && !iscntrl((int) buf[0]) && (len + num < sizeof passwd)) {
+ if(num && !iscntrl((int) buf[0]) && (len + num < sizeof passwd)) {
memcpy(passwd + len, buf, num);
len += num;
}
int screen;
if((argc == 2) && !strcmp("-v", argv[1]))
- die("slock-%s, © 2006-2012 Anselm R Garbe\n", VERSION);
+ die("slock-%s, © 2006-2014 slock engineers\n", VERSION);
else if(argc != 1)
usage();