summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBeech Rintoul <beech@FreeBSD.org>2008-09-17 05:11:19 +0000
committerBeech Rintoul <beech@FreeBSD.org>2008-09-17 05:11:19 +0000
commit0d726571250a8f94e4e906a1206984a780b2bfb7 (patch)
tree38fe72b39f9a81a61c1ca2176905ba1d29ca7a83
parent-Fix unshading crash. [1] (diff)
- Patch src netio.c - wrong telnet filter
- Telnet filters input data, but Russian symbols deleted PR: ports/127096 Submitted by: Sherbacov Dmitriy <sherbacov@bsys.ru> Approved by: portmgr (linimon)
Notes
Notes: svn path=/head/; revision=220415
-rw-r--r--ftp/proftpd/Makefile9
-rw-r--r--ftp/proftpd/files/extra-patch-src-netio.c51
2 files changed, 58 insertions, 2 deletions
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--;
+ }