summaryrefslogtreecommitdiff
path: root/libexec
diff options
context:
space:
mode:
authorAndrey A. Chernov <ache@FreeBSD.org>2002-01-21 19:07:15 +0000
committerAndrey A. Chernov <ache@FreeBSD.org>2002-01-21 19:07:15 +0000
commitf650a124840b5f7977fd6ab410e51266d78a50c8 (patch)
treee6f9e50eb54a5fbd6d19cd559ac09d1637ba1c6b /libexec
parentb0aa095ad046c5f512693954fa36ae317373e887 (diff)
Notes
Diffstat (limited to 'libexec')
-rw-r--r--libexec/ftpd/ftpd.c19
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:
/*