Module Name: src Committed By: martin Date: Mon Oct 2 17:25:55 UTC 2023
Modified Files: src/libexec/ftpd [netbsd-9]: ftpd.c Log Message: Pull up following revision(s) (requested by lukem in ticket #1742): libexec/ftpd/ftpd.c: revision 1.208 pam_set_item PAM_SOCKADDR expects sockaddr_storage structure Instead, internal struct sockinet was used. Because it's length is shorter than sockaddr_storage, libpam was copying also memory outside of sockinet struct. To generate a diff of this commit: cvs rdiff -u -r1.204.4.3 -r1.204.4.4 src/libexec/ftpd/ftpd.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/libexec/ftpd/ftpd.c diff -u src/libexec/ftpd/ftpd.c:1.204.4.3 src/libexec/ftpd/ftpd.c:1.204.4.4 --- src/libexec/ftpd/ftpd.c:1.204.4.3 Mon Oct 2 17:13:33 2023 +++ src/libexec/ftpd/ftpd.c Mon Oct 2 17:25:54 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: ftpd.c,v 1.204.4.3 2023/10/02 17:13:33 martin Exp $ */ +/* $NetBSD: ftpd.c,v 1.204.4.4 2023/10/02 17:25:54 martin Exp $ */ /* * Copyright (c) 1997-2023 The NetBSD Foundation, Inc. @@ -97,7 +97,7 @@ __COPYRIGHT("@(#) Copyright (c) 1985, 19 #if 0 static char sccsid[] = "@(#)ftpd.c 8.5 (Berkeley) 4/28/95"; #else -__RCSID("$NetBSD: ftpd.c,v 1.204.4.3 2023/10/02 17:13:33 martin Exp $"); +__RCSID("$NetBSD: ftpd.c,v 1.204.4.4 2023/10/02 17:25:54 martin Exp $"); #endif #endif /* not lint */ @@ -3896,6 +3896,7 @@ auth_pam(void) int e; ftpd_cred_t auth_cred = { curname, 0 }; struct pam_conv conv = { &auth_conv, &auth_cred }; + struct sockaddr_storage ss; e = pam_start("ftpd", curname, &conv, &pamh); if (e != PAM_SUCCESS) { @@ -3918,7 +3919,9 @@ auth_pam(void) return -1; } - e = pam_set_item(pamh, PAM_SOCKADDR, &his_addr); + memset(&ss, 0, sizeof(ss)); + memcpy(&ss, &his_addr.si_su, his_addr.su_len); + e = pam_set_item(pamh, PAM_SOCKADDR, &ss); if (e != PAM_SUCCESS) { syslog(LOG_ERR, "pam_set_item(PAM_SOCKADDR): %s", pam_strerror(pamh, e));