Mercurial > dropbear
changeset 673:c519b78b6d1a
- 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
author | Matt Johnston <matt@ucc.asn.au> |
---|---|
date | Wed, 09 May 2012 20:33:16 +0800 |
parents | 6c35ff40e496 |
children | 1291413c7c7e |
files | common-channel.c svr-session.c svr-tcpfwd.c |
diffstat | 3 files changed, 35 insertions(+), 23 deletions(-) [+] |
line wrap: on
line diff
--- a/common-channel.c Tue Apr 24 22:05:55 2012 +0800 +++ b/common-channel.c Wed May 09 20:33:16 2012 +0800 @@ -653,6 +653,8 @@ 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);
--- a/svr-session.c Tue Apr 24 22:05:55 2012 +0800 +++ b/svr-session.c Wed May 09 20:33:16 2012 +0800 @@ -52,9 +52,7 @@ {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},
--- a/svr-tcpfwd.c Tue Apr 24 22:05:55 2012 +0800 +++ b/svr-tcpfwd.c Wed May 09 20:33:16 2012 +0800 @@ -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_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 @@ 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 @@ return err; } -#endif +#endif /* ENABLE_SVR_LOCALTCPFWD */