From 0d726571250a8f94e4e906a1206984a780b2bfb7 Mon Sep 17 00:00:00 2001 From: Beech Rintoul Date: Wed, 17 Sep 2008 05:11:19 +0000 Subject: - Patch src netio.c - wrong telnet filter - Telnet filters input data, but Russian symbols deleted PR: ports/127096 Submitted by: Sherbacov Dmitriy Approved by: portmgr (linimon) --- ftp/proftpd/Makefile | 9 ++++-- ftp/proftpd/files/extra-patch-src-netio.c | 51 +++++++++++++++++++++++++++++++ 2 files changed, 58 insertions(+), 2 deletions(-) create mode 100644 ftp/proftpd/files/extra-patch-src-netio.c (limited to 'ftp') diff --git a/ftp/proftpd/Makefile b/ftp/proftpd/Makefile index c1bbc131e2bf..643f89bde753 100644 --- a/ftp/proftpd/Makefile +++ b/ftp/proftpd/Makefile @@ -87,8 +87,8 @@ OPTIONS= IPV6 "Use IPv6" off \ CLAMAV "Include mod_clamav" off \ DIGEST "Include mod_digest" off \ COMB "Include mod_comb (multistream upload)" off \ - CODECONV "Use charset conversion (possibly broken)" off - + CODECONV "Use charset conversion (possibly broken)" off \ + RUSSIANCHAR "Disable telnet filterning (Fix Russian)" off MODULES?= LIBDIRS?= INCLUDEDIRS?= @@ -265,6 +265,11 @@ PROFTPD_LIBS+= -liconv -L${LOCALBASE}/lib EXTRA_PATCHES+= ${FILESDIR}/extra-patch-mod-codeconv .endif +.if defined(WITH_RUSSIANCHAR) +EXTRA_PATCHES+= ${FILESDIR}/extra-patch-src-netio.c +.endif + + # mod_ifsession should be the last item in the modules list .if !defined(WITHOUT_IFSESSION) MODULES:=${MODULES}:mod_ifsession diff --git a/ftp/proftpd/files/extra-patch-src-netio.c b/ftp/proftpd/files/extra-patch-src-netio.c new file mode 100644 index 000000000000..060c4f5d30b9 --- /dev/null +++ b/ftp/proftpd/files/extra-patch-src-netio.c @@ -0,0 +1,51 @@ +diff -r -u -P src/netio.c src/netio.c +--- src/netio.c.orig 2007-08-22 18:50:23.000000000 +0400 ++++ src/netio.c 2008-09-04 18:27:21.000000000 +0400 +@@ -954,47 +954,6 @@ + cp = *pbuf->current++; + pbuf->remaining++; + +- switch (mode) { +- case IAC: +- switch (cp) { +- case WILL: +- case WONT: +- case DO: +- case DONT: +- mode = cp; +- continue; +- +- case IAC: +- mode = 0; +- break; +- +- default: +- /* Ignore */ +- mode = 0; +- continue; +- } +- break; +- +- case WILL: +- case WONT: +- pr_netio_printf(out_nstrm, "%c%c%c", IAC, DONT, cp); +- mode = 0; +- continue; +- +- case DO: +- case DONT: +- pr_netio_printf(out_nstrm, "%c%c%c", IAC, WONT, cp); +- mode = 0; +- continue; +- +- default: +- if (cp == IAC) { +- mode = cp; +- continue; +- } +- break; +- } +- + *bp++ = cp; + buflen--; + } -- cgit v1.2.3