Xinqi Bao's Git
projects
/
slock.git
/ blobdiff
summary
|
log
|
commit
|
diff
|
tree
raw
|
inline
| side by side
fixed usage string
[slock.git]
/
slock.c
diff --git
a/slock.c
b/slock.c
index
467937c
..
face75e
100644
(file)
--- a/
slock.c
+++ b/
slock.c
@@
-23,6
+23,8
@@
#include <bsd_auth.h>
#endif
#include <bsd_auth.h>
#endif
+#include "config.h"
+
typedef struct {
int screen;
Window root, win;
typedef struct {
int screen;
Window root, win;
@@
-65,19
+67,22
@@
getpw(void) { /* only run as root */
const char *rval;
struct passwd *pw;
const char *rval;
struct passwd *pw;
+ errno = 0;
pw = getpwuid(getuid());
pw = getpwuid(getuid());
- 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
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");
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
rval = sp->sp_pwdp;
}
#endif
@@
-144,7
+149,7
@@
readpw(Display *dpy, const char *pws)
--len;
break;
default:
--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;
}
memcpy(passwd + len, buf, num);
len += num;
}
@@
-256,7
+261,7
@@
main(int argc, char **argv) {
int screen;
if((argc == 2) && !strcmp("-v", argv[1]))
int screen;
if((argc == 2) && !strcmp("-v", argv[1]))
- die("slock-%s, © 2006-201
2 Anselm R Garbe
\n", VERSION);
+ die("slock-%s, © 2006-201
4 slock engineers
\n", VERSION);
else if(argc != 1)
usage();
else if(argc != 1)
usage();