version 1.4, 1996/09/30 01:54:48 |
version 1.5, 1997/02/14 23:27:28 |
|
|
{ |
{ |
register char *p, *t; |
register char *p, *t; |
int tries; |
int tries; |
char buf[_PASSWORD_LEN+1], salt[9], *crypt(), *getpass(); |
char buf[_PASSWORD_LEN+1], salt[_PASSWORD_LEN], *crypt(), *getpass(); |
|
void pwd_gensalt __P(( char *, int, struct passwd *, char)); |
|
|
(void)printf("Changing local password for %s.\n", pw->pw_name); |
(void)printf("Changing local password for %s.\n", pw->pw_name); |
|
|
|
|
break; |
break; |
(void)printf("Mismatch; try again, EOF to quit.\n"); |
(void)printf("Mismatch; try again, EOF to quit.\n"); |
} |
} |
/* grab a random printable character that isn't a colon */ |
pwd_gensalt( salt, _PASSWORD_LEN, pw, 'l' ); |
(void)srandom((int)time((time_t *)NULL)); |
|
#ifdef NEWSALT |
|
salt[0] = _PASSWORD_EFMT1; |
|
to64(&salt[1], (long)(29 * 25), 4); |
|
to64(&salt[5], random(), 4); |
|
#else |
|
to64(&salt[0], random(), 2); |
|
#endif |
|
return(crypt(buf, salt)); |
return(crypt(buf, salt)); |
} |
} |
|
|