aboutsummaryrefslogtreecommitdiffstats
path: root/package
diff options
context:
space:
mode:
authorNicolas Thill <nico@openwrt.org>2011-11-03 08:12:17 +0000
committerNicolas Thill <nico@openwrt.org>2011-11-03 08:12:17 +0000
commite4f42228c62c1ef8f075b6765f090af0983feb89 (patch)
treeeb58ec73d536f522a7df85a6fe9c3bec7a97049c /package
parentcf54126de393e7391ddcc757400fdf62bf6cb39f (diff)
downloadmaster-187ad058-e4f42228c62c1ef8f075b6765f090af0983feb89.tar.gz
master-187ad058-e4f42228c62c1ef8f075b6765f090af0983feb89.tar.bz2
master-187ad058-e4f42228c62c1ef8f075b6765f090af0983feb89.zip
package/dropbear: fix segfault with remote port forwarding (closes: #10339)
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@28718 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'package')
-rw-r--r--package/dropbear/Makefile2
-rw-r--r--package/dropbear/patches/160-segfault_fwd_localhost.patch40
2 files changed, 41 insertions, 1 deletions
diff --git a/package/dropbear/Makefile b/package/dropbear/Makefile
index 34f064c37f..5006c94bb3 100644
--- a/package/dropbear/Makefile
+++ b/package/dropbear/Makefile
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
PKG_NAME:=dropbear
PKG_VERSION:=0.53.1
-PKG_RELEASE:=4
+PKG_RELEASE:=5
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:= \
diff --git a/package/dropbear/patches/160-segfault_fwd_localhost.patch b/package/dropbear/patches/160-segfault_fwd_localhost.patch
new file mode 100644
index 0000000000..05ae844c19
--- /dev/null
+++ b/package/dropbear/patches/160-segfault_fwd_localhost.patch
@@ -0,0 +1,40 @@
+http://wl500g.googlecode.com/svn/trunk/dropbear/011-fwd-all-segfault.patch
+https://dev.openwrt.org/ticket/10339
+
+--- a/svr-tcpfwd.c
++++ b/svr-tcpfwd.c
+@@ -210,15 +210,13 @@ static int svr_remotetcpreq() {
+ tcpinfo->chantype = &svr_chan_tcpremote;
+ tcpinfo->tcp_type = forwarded;
+
+- if (!opts.listen_fwd_all
+- || (strcmp(tcpinfo->listenaddr, "localhost") == 0) ) {
+- // NULL means "localhost only"
+- tcpinfo->listenaddr = NULL;
+- }
+- else
+- {
+- tcpinfo->listenaddr = bindaddr;
+- }
++ if (!opts.listen_fwd_all || (strcmp(bindaddr, "localhost") == 0) ) {
++ // NULL means "localhost only"
++ tcpinfo->listenaddr = NULL;
++ }
++ else {
++ tcpinfo->listenaddr = bindaddr;
++ }
+
+ ret = listen_tcpfwd(tcpinfo);
+
+--- a/tcp-accept.c
++++ b/tcp-accept.c
+@@ -80,6 +80,9 @@ static void tcp_acceptor(struct Listener
+ addr = tcpinfo->listenaddr;
+ port = tcpinfo->listenport;
+ }
++ if (!addr) {
++ addr = "localhost";
++ }
+
+ buf_putstring(ses.writepayload, addr, strlen(addr));
+ buf_putint(ses.writepayload, port);