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 | e4f42228c62c1ef8f075b6765f090af0983feb89 (patch) | |
tree | eb58ec73d536f522a7df85a6fe9c3bec7a97049c /package | |
parent | cf54126de393e7391ddcc757400fdf62bf6cb39f (diff) | |
download | master-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/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); |