xref: /netbsd-src/external/bsd/blocklist/diff/ftpd.diff (revision a51582d48a7984d3551d20318093f58613235f76)
1df83713dSchristos--- /dev/null	2015-01-23 17:30:40.000000000 -0500
2df83713dSchristos+++ pfilter.c	2015-01-23 17:12:02.000000000 -0500
3df83713dSchristos@@ -0,0 +1,24 @@
4df83713dSchristos+#include <stdio.h>
5df83713dSchristos+#include <blocklist.h>
6df83713dSchristos+
7df83713dSchristos+#include "pfilter.h"
8df83713dSchristos+
9df83713dSchristos+static struct blocklist *blstate;
10df83713dSchristos+
11df83713dSchristos+void
12df83713dSchristos+pfilter_open(void)
13df83713dSchristos+{
14df83713dSchristos+	if (blstate == NULL)
15df83713dSchristos+		blstate = blocklist_open();
16df83713dSchristos+}
17df83713dSchristos+
18df83713dSchristos+void
19df83713dSchristos+pfilter_notify(int what, const char *msg)
20df83713dSchristos+{
21df83713dSchristos+	pfilter_open();
22df83713dSchristos+
23df83713dSchristos+	if (blstate == NULL)
24df83713dSchristos+		return;
25df83713dSchristos+
26df83713dSchristos+	blocklist_r(blstate, what, 0, msg);
27df83713dSchristos+}
28df83713dSchristos--- /dev/null	2015-01-23 17:30:40.000000000 -0500
29df83713dSchristos+++ pfilter.h	2015-01-23 17:07:25.000000000 -0500
30df83713dSchristos@@ -0,0 +1,2 @@
31df83713dSchristos+void pfilter_open(void);
32df83713dSchristos+void pfilter_notify(int, const char *);
33df83713dSchristosIndex: Makefile
34df83713dSchristos===================================================================
35df83713dSchristosRCS file: /cvsroot/src/libexec/ftpd/Makefile,v
36df83713dSchristosretrieving revision 1.63
37df83713dSchristosdiff -u -p -u -r1.63 Makefile
38df83713dSchristos--- Makefile	14 Aug 2011 11:46:28 -0000	1.63
39df83713dSchristos+++ Makefile	23 Jan 2015 22:32:20 -0000
40df83713dSchristos@@ -11,6 +11,10 @@ LDADD+=	-lcrypt -lutil
41df83713dSchristos MAN=	ftpd.conf.5 ftpusers.5 ftpd.8
42df83713dSchristos MLINKS=	ftpusers.5 ftpchroot.5
43df83713dSchristos
44df83713dSchristos+SRCS+=	pfilter.c
45df83713dSchristos+LDADD+=	-lblocklist
46*a51582d4Schristos+DPADD+=	${LIBBLOCKLIST}
47df83713dSchristos+
48df83713dSchristos .if defined(NO_INTERNAL_LS)
49df83713dSchristos CPPFLAGS+=-DNO_INTERNAL_LS
50df83713dSchristos .else
51df83713dSchristosIndex: ftpd.c
52df83713dSchristos===================================================================
53df83713dSchristosRCS file: /cvsroot/src/libexec/ftpd/ftpd.c,v
54df83713dSchristosretrieving revision 1.200
55df83713dSchristosdiff -u -p -u -r1.200 ftpd.c
56df83713dSchristos--- ftpd.c	31 Jul 2013 19:50:47 -0000	1.200
57df83713dSchristos+++ ftpd.c	23 Jan 2015 22:32:20 -0000
58df83713dSchristos@@ -165,6 +165,8 @@ __RCSID("$NetBSD: ftpd.c,v 1.200 2013/07
59df83713dSchristos #include <security/pam_appl.h>
60df83713dSchristos #endif
61df83713dSchristos
62df83713dSchristos+#include "pfilter.h"
63df83713dSchristos+
64df83713dSchristos #define	GLOBAL
65df83713dSchristos #include "extern.h"
66df83713dSchristos #include "pathnames.h"
67df83713dSchristos@@ -471,6 +473,8 @@ main(int argc, char *argv[])
68df83713dSchristos 	if (EMPTYSTR(confdir))
69df83713dSchristos 		confdir = _DEFAULT_CONFDIR;
70df83713dSchristos
71df83713dSchristos+	pfilter_open();
72df83713dSchristos+
73df83713dSchristos 	if (dowtmp) {
74df83713dSchristos #ifdef SUPPORT_UTMPX
75df83713dSchristos 		ftpd_initwtmpx();
76df83713dSchristos@@ -1401,6 +1405,7 @@ do_pass(int pass_checked, int pass_rval,
77df83713dSchristos 		if (rval) {
78df83713dSchristos 			reply(530, "%s", rval == 2 ? "Password expired." :
79df83713dSchristos 			    "Login incorrect.");
80df83713dSchristos+			pfilter_notify(1, rval == 2 ? "exppass" : "badpass");
81df83713dSchristos 			if (logging) {
82df83713dSchristos 				syslog(LOG_NOTICE,
83df83713dSchristos 				    "FTP LOGIN FAILED FROM %s", remoteloghost);
84df83713dSchristos@@ -1444,6 +1449,7 @@ do_pass(int pass_checked, int pass_rval,
85df83713dSchristos 				*remote_ip = 0;
86df83713dSchristos 		remote_ip[sizeof(remote_ip) - 1] = 0;
87df83713dSchristos 		if (!auth_hostok(lc, remotehost, remote_ip)) {
88df83713dSchristos+			pfilter_notify(1, "bannedhost");
89df83713dSchristos 			syslog(LOG_INFO|LOG_AUTH,
90df83713dSchristos 			    "FTP LOGIN FAILED (HOST) as %s: permission denied.",
91df83713dSchristos 			    pw->pw_name);
92