From d8722fac7046020715c41106df28371f3f521132 Mon Sep 17 00:00:00 2001 From: Nicolas Thill Date: Thu, 3 Nov 2011 08:12:17 +0000 Subject: [PATCH] package/dropbear: fix segfault with remote port forwarding (closes: #10339) SVN-Revision: 28718 --- package/dropbear/Makefile | 2 +- .../patches/160-segfault_fwd_localhost.patch | 40 +++++++++++++++++++ 2 files changed, 41 insertions(+), 1 deletion(-) create mode 100644 package/dropbear/patches/160-segfault_fwd_localhost.patch 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);