diff options
author | Nicolas Thill <nico@openwrt.org> | 2011-11-03 08:12:17 +0000 |
---|---|---|
committer | Nicolas Thill <nico@openwrt.org> | 2011-11-03 08:12:17 +0000 |
commit | d8722fac7046020715c41106df28371f3f521132 (patch) | |
tree | 6b0f91af67ea7dfa5ae2ed4ef26384ffc2b6305d | |
parent | c4e9e4d27ed84b056e7e195826e782cad3c7230b (diff) | |
download | upstream-d8722fac7046020715c41106df28371f3f521132.tar.gz upstream-d8722fac7046020715c41106df28371f3f521132.tar.bz2 upstream-d8722fac7046020715c41106df28371f3f521132.zip |
package/dropbear: fix segfault with remote port forwarding (closes: #10339)
SVN-Revision: 28718
-rw-r--r-- | package/dropbear/Makefile | 2 | ||||
-rw-r--r-- | package/dropbear/patches/160-segfault_fwd_localhost.patch | 40 |
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); |