When opieverify() is fail, fallback to try unix password.

Tested by:	kuriyama
This commit is contained in:
Hajimu UMEMOTO 2002-04-16 10:54:30 +00:00
parent 8133673540
commit b2b1845212

View File

@ -148,6 +148,7 @@ doit(int f, struct sockaddr *fromp)
int pv[2], pid, ready, readfrom, cc;
char buf[BUFSIZ], sig;
int one = 1;
int authenticated = 0;
(void) signal(SIGINT, SIG_DFL);
(void) signal(SIGQUIT, SIG_DFL);
@ -211,11 +212,15 @@ doit(int f, struct sockaddr *fromp)
if (*pwd->pw_passwd != '\0') {
#ifdef OPIE
opiechallenge(&opiedata, user, opieprompt);
if (opieverify(&opiedata, pass)) {
#else /* OPIE */
namep = crypt(pass, pwd->pw_passwd);
if (strcmp(namep, pwd->pw_passwd)) {
if (!opieverify(&opiedata, pass))
authenticated = 1;
#endif /* OPIE */
if (!authenticated) {
namep = crypt(pass, pwd->pw_passwd);
if (!strcmp(namep, pwd->pw_passwd))
authenticated = 1;
}
if (!authenticated) {
syslog(LOG_ERR, "LOGIN FAILURE from %s, %s",
remote, user);
error("Login incorrect.\n");