#ifdef YP
char *master;
#endif
+#ifdef YPPASSWD
+ char *cryptpw;
+#endif
while ((ch = getopt(argc, argv, "f")) != -1)
switch(ch) {
pass = getpass("Password:");
#ifdef YPPASSWD
if (!force) {
- if (strcmp(crypt(pass, pw->pw_passwd), pw->pw_passwd) != 0)
+ cryptpw = crypt(pass, pw->pw_passwd);
+ if (cryptpw == NULL || strcmp(cryptpw, pw->pw_passwd) != 0)
errx(1, "invalid password");
}
#else
struct passwd lpw, *old_pw, *pw;
int ch, pfd, tfd;
const char *password;
+ char *cryptpw;
char *arg = NULL;
uid_t uid;
#ifdef YP
if (old_pw && !master_mode) {
password = getpass("Password: ");
- if (strcmp(crypt(password, old_pw->pw_passwd),
- old_pw->pw_passwd) != 0)
+ cryptpw = crypt(password, old_pw->pw_passwd);
+ if (cryptpw == NULL || strcmp(cryptpw, old_pw->pw_passwd) != 0)
baduser();
} else {
password = "";
char salt[3];
unsigned rnd;
long seed;
+ char *cryptpw;
strncpy(salt, pw, sizeof(salt));
- memcpy(buf, crypt(pw, salt), sizeof(buf));
+ cryptpw = crypt(pw, salt);
+ if (cryptpw == NULL) {
+ fprintf(stderr, "crypt(3) failure\n");
+ exit(1);
+ }
+ memcpy(buf, cryptpw, sizeof(buf));
seed = 123;
for (i=0; i<13; i++)
seed = seed*buf[i] + i;
struct tm *timp;
int ch, failures, sectimeout, usemine, vtylock;
long tmp;
- char *ap, *ep, *mypw, *ttynam, *tzn;
+ char *ap, *ep, *mypw, *cryptpw, *ttynam, *tzn;
char hostname[MAXHOSTNAMELEN + 1], s[BUFSIZ], s1[BUFSIZ];
openlog("lock", LOG_ODELAY, LOG_AUTH);
}
if (usemine) {
s[strlen(s) - 1] = '\0';
- if (!strcmp(mypw, crypt(s, mypw)))
+ cryptpw = crypt(s, mypw);
+ if (cryptpw == NULL || !strcmp(mypw, cryptpw))
break;
}
else if (!strcmp(s, s1))
int dbmember, i, ngrps;
gid_t egid;
struct group *grp;
- char *ep, *pass;
+ char *ep, *pass, *cryptpw;
char **p;
egid = getegid();
}
if (!dbmember && *grp->gr_passwd != '\0' && getuid() != 0) {
pass = getpass("Password:");
- if (pass == NULL ||
- strcmp(grp->gr_passwd, crypt(pass, grp->gr_passwd)) != 0) {
+ if (pass == NULL)
+ return;
+ cryptpw = crypt(pass, grp->gr_passwd);
+ if (cryptpw == NULL || strcmp(grp->gr_passwd, cryptpw) != 0) {
fprintf(stderr, "Sorry\n");
return;
}
{
int i;
char salt[12];
+ char *cryptpw;
static char buf[256];
salt[i] = chars[arc4random() % 63];
salt[i] = '\0';
- return strcpy(buf, crypt(password, salt));
+ cryptpw = crypt(password, salt);
+ if (cryptpw == NULL)
+ errx(EX_CONFIG, "crypt(3) failure");
+ return strcpy(buf, cryptpw);
}
#if defined(USE_MD5RAND)