summaryrefslogtreecommitdiffstats
path: root/libexec/ftpd
diff options
context:
space:
mode:
authorguido <guido@FreeBSD.org>2000-10-12 10:21:05 +0000
committerguido <guido@FreeBSD.org>2000-10-12 10:21:05 +0000
commit752f9b3d1c86d34a2d9e99a3eee960bd9e922e17 (patch)
treefa4a3c602aabff7617a21a8a7074eaa2a8d8e2ae /libexec/ftpd
parent18dd6cb30ddc2a550e08cd3c05cedf7c240dd905 (diff)
downloadFreeBSD-src-752f9b3d1c86d34a2d9e99a3eee960bd9e922e17.zip
FreeBSD-src-752f9b3d1c86d34a2d9e99a3eee960bd9e922e17.tar.gz
Fix broken PAM with SKEY behaviour: the skey.access file checks
were broken because the code failed to set PAM_RHOST.
Diffstat (limited to 'libexec/ftpd')
-rw-r--r--libexec/ftpd/ftpd.c15
1 files changed, 8 insertions, 7 deletions
diff --git a/libexec/ftpd/ftpd.c b/libexec/ftpd/ftpd.c
index 0035051..c7c545b 100644
--- a/libexec/ftpd/ftpd.c
+++ b/libexec/ftpd/ftpd.c
@@ -207,7 +207,6 @@ char proctitle[LINE_MAX]; /* initial part of title */
#ifdef SKEY
int pwok = 0;
-char addr_string[INET6_ADDRSTRLEN]; /* XXX */
#endif
#define LOGCMD(cmd, file) \
@@ -502,11 +501,6 @@ main(argc, argv, envp)
if (signal(SIGURG, myoob) == SIG_ERR)
syslog(LOG_ERR, "signal: %m");
-#ifdef SKEY
- getnameinfo((struct sockaddr *)&his_addr, his_addr.su_len,
- addr_string, sizeof(addr_string) - 1, NULL, 0,
- NI_NUMERICHOST|NI_WITHSCOPEID);
-#endif
addrlen = sizeof(ctrl_addr);
if (getsockname(0, (struct sockaddr *)&ctrl_addr, &addrlen) < 0) {
syslog(LOG_ERR, "getsockname (%s): %m",argv[0]);
@@ -949,7 +943,7 @@ user(name)
if (logging)
strncpy(curname, name, sizeof(curname)-1);
#ifdef SKEY
- pwok = skeyaccess(name, NULL, remotehost, addr_string);
+ pwok = skeyaccess(name, NULL, remotehost, remotehost);
reply(331, "%s", skey_challenge(name, pw, pwok));
#else
reply(331, "Password required for %s.", name);
@@ -1110,6 +1104,13 @@ auth_pam(struct passwd **ppw, const char *pass)
return -1;
}
+ e = pam_set_item(pamh, PAM_RHOST, remotehost);
+ if (e != PAM_SUCCESS) {
+ syslog(LOG_ERR, "pam_set_item(PAM_RHOST): %s",
+ pam_strerror(pamh, e));
+ return -1;
+ }
+
e = pam_authenticate(pamh, 0);
switch (e) {
case PAM_SUCCESS:
OpenPOWER on IntegriCloud