summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatt Johnston <matt@ucc.asn.au>2012-05-09 20:33:16 +0800
committerMatt Johnston <matt@ucc.asn.au>2012-05-09 20:33:16 +0800
commitc8401a1d3cf8af4800a7bf909b6fded706a2eddf (patch)
treee08b5a7f836b66c1b1f24a2178a5ed39033cd09f
parent0ff915802a75403c479a2105ca273e4755324152 (diff)
downloaddropbear-c8401a1d3cf8af4800a7bf909b6fded706a2eddf.tar.gz
- Don't sent SSH_MSG_UNIMPLEMENTED if we don't have ENABLE_SVR_REMOTETCPFWD
- Fix build if ENABLE_SVR_REMOTETCPFWD is disabled but ENABLE_SVR_LOCALTCPFWD is enabled
-rw-r--r--common-channel.c2
-rw-r--r--svr-session.c2
-rw-r--r--svr-tcpfwd.c54
3 files changed, 35 insertions, 23 deletions
diff --git a/common-channel.c b/common-channel.c
index 9eaba50..5f22d44 100644
--- a/common-channel.c
+++ b/common-channel.c
@@ -653,6 +653,8 @@ static void send_msg_channel_data(struct Channel *channel, int isextended) {
len, errno, fd))
return;
}
+
+ TRACE(("send_msg_channel_data: len %d fd %d", len, fd))
buf_incrwritepos(ses.writepayload, len);
/* ... real size here */
buf_setpos(ses.writepayload, size_pos);
diff --git a/svr-session.c b/svr-session.c
index ac73dab..9c12e0f 100644
--- a/svr-session.c
+++ b/svr-session.c
@@ -52,9 +52,7 @@ static const packettype svr_packettypes[] = {
{SSH_MSG_KEXINIT, recv_msg_kexinit},
{SSH_MSG_KEXDH_INIT, recv_msg_kexdh_init}, /* server */
{SSH_MSG_NEWKEYS, recv_msg_newkeys},
-#ifdef ENABLE_SVR_REMOTETCPFWD
{SSH_MSG_GLOBAL_REQUEST, recv_msg_global_request_remotetcp},
-#endif
{SSH_MSG_CHANNEL_REQUEST, recv_msg_channel_request},
{SSH_MSG_CHANNEL_OPEN, recv_msg_channel_open},
{SSH_MSG_CHANNEL_EOF, recv_msg_channel_eof},
diff --git a/svr-tcpfwd.c b/svr-tcpfwd.c
index 591a2fc..e1f3a31 100644
--- a/svr-tcpfwd.c
+++ b/svr-tcpfwd.c
@@ -34,24 +34,31 @@
#include "runopts.h"
#include "auth.h"
-#ifdef ENABLE_SVR_REMOTETCPFWD
+static void send_msg_request_failure();
+
+static void send_msg_request_failure() {
+ CHECKCLEARTOWRITE();
+ buf_putbyte(ses.writepayload, SSH_MSG_REQUEST_FAILURE);
+ encrypt_packet();
+}
+
+#ifndef ENABLE_SVR_REMOTETCPFWD
+
+/* This is better than SSH_MSG_UNIMPLEMENTED */
+void recv_msg_global_request_remotetcp() {
+ TRACE(("recv_msg_global_request_remotetcp: remote tcp forwarding not compiled in"))
+ send_msg_request_failure();
+}
+
+/* */
+#endif /* !ENABLE_SVR_REMOTETCPFWD */
static void send_msg_request_success();
-static void send_msg_request_failure();
static int svr_cancelremotetcp();
static int svr_remotetcpreq();
static int newtcpdirect(struct Channel * channel);
-
-const struct ChanType svr_chan_tcpdirect = {
- 1, /* sepfds */
- "direct-tcpip",
- newtcpdirect, /* init */
- NULL, /* checkclose */
- NULL, /* reqhandler */
- NULL /* closehandler */
-};
-
+#ifdef ENABLE_SVR_REMOTETCPFWD
static const struct ChanType svr_chan_tcpremote = {
1, /* sepfds */
"forwarded-tcpip",
@@ -117,14 +124,6 @@ static void send_msg_request_success() {
}
-static void send_msg_request_failure() {
-
- CHECKCLEARTOWRITE();
- buf_putbyte(ses.writepayload, SSH_MSG_REQUEST_FAILURE);
- encrypt_packet();
-
-}
-
static int matchtcp(void* typedata1, void* typedata2) {
const struct TCPListener *info1 = (struct TCPListener*)typedata1;
@@ -230,6 +229,19 @@ out:
return ret;
}
+#endif /* ENABLE_SVR_REMOTETCPFWD */
+
+#ifdef ENABLE_SVR_LOCALTCPFWD
+
+const struct ChanType svr_chan_tcpdirect = {
+ 1, /* sepfds */
+ "direct-tcpip",
+ newtcpdirect, /* init */
+ NULL, /* checkclose */
+ NULL, /* reqhandler */
+ NULL /* closehandler */
+};
+
/* Called upon creating a new direct tcp channel (ie we connect out to an
* address */
static int newtcpdirect(struct Channel * channel) {
@@ -294,4 +306,4 @@ out:
return err;
}
-#endif
+#endif /* ENABLE_SVR_LOCALTCPFWD */