diff options
| author | Andrey A. Chernov <ache@FreeBSD.org> | 2002-01-21 19:07:15 +0000 |
|---|---|---|
| committer | Andrey A. Chernov <ache@FreeBSD.org> | 2002-01-21 19:07:15 +0000 |
| commit | f650a124840b5f7977fd6ab410e51266d78a50c8 (patch) | |
| tree | e6f9e50eb54a5fbd6d19cd559ac09d1637ba1c6b /libexec | |
| parent | b0aa095ad046c5f512693954fa36ae317373e887 (diff) | |
Notes
Diffstat (limited to 'libexec')
| -rw-r--r-- | libexec/ftpd/ftpd.c | 19 |
1 files changed, 9 insertions, 10 deletions
diff --git a/libexec/ftpd/ftpd.c b/libexec/ftpd/ftpd.c index e421142f2716..287436a025d2 100644 --- a/libexec/ftpd/ftpd.c +++ b/libexec/ftpd/ftpd.c @@ -1251,24 +1251,23 @@ pass(passwd) } #ifdef USE_PAM rval = auth_pam(&pw, passwd); - opieunlock(); /* XXX */ - if (rval == 0 || (!pwok && rval > 0)) + if (rval >= 0) { + opieunlock(); goto skip; - xpasswd = crypt(passwd, pw->pw_passwd); -#else /* !USE_PAM */ + } +#endif if (opieverify(&opiedata, passwd) == 0) xpasswd = pw->pw_passwd; - else if (pwok) + else if (pwok) { xpasswd = crypt(passwd, pw->pw_passwd); - else { + if (passwd[0] == '\0' && pw->pw_passwd[0] != '\0') + xpasswd = ":"; + } else { rval = 1; goto skip; } -#endif /* !USE_PAM */ rval = strcmp(pw->pw_passwd, xpasswd); - /* The strcmp does not catch null passwords! */ - if (*pw->pw_passwd == '\0' || - (pw->pw_expire && time(NULL) >= pw->pw_expire)) + if (pw->pw_expire && time(NULL) >= pw->pw_expire) rval = 1; /* failure */ skip: /* |
