diff --git a/ChangeLog b/ChangeLog index 1cb100afc..295e87f36 100644 --- a/ChangeLog +++ b/ChangeLog @@ -3,6 +3,9 @@ - markus@cvs.openbsd.org 2001/04/29 18:32:52 [serverloop.c] fix whitespace + - markus@cvs.openbsd.org 2001/04/29 19:16:52 + [channels.c clientloop.c compat.c compat.h serverloop.c] + more ssh.com-2.0.x bug-compat; from per@appgate.com 20010429 - (bal) Updated INSTALL. PCRE moved to a new place. @@ -5277,4 +5280,4 @@ - Wrote replacements for strlcpy and mkdtemp - Released 1.0pre1 -$Id: ChangeLog,v 1.1181 2001/04/29 19:49:14 mouring Exp $ +$Id: ChangeLog,v 1.1182 2001/04/29 19:52:00 mouring Exp $ diff --git a/channels.c b/channels.c index 57890aec9..cd73bd726 100644 --- a/channels.c +++ b/channels.c @@ -40,7 +40,7 @@ */ #include "includes.h" -RCSID("$OpenBSD: channels.c,v 1.109 2001/04/17 12:55:03 markus Exp $"); +RCSID("$OpenBSD: channels.c,v 1.110 2001/04/29 19:16:52 markus Exp $"); #include #include @@ -1534,7 +1534,7 @@ channel_input_open_failure(int type, int plen, void *ctxt) "non-opening channel %d.", id); if (compat20) { reason = packet_get_int(); - if (packet_remaining() > 0) { + if (!(datafellows & SSH_BUG_OPENFAILURE)) { msg = packet_get_string(NULL); lang = packet_get_string(NULL); } diff --git a/clientloop.c b/clientloop.c index 369ffe4ac..d76189738 100644 --- a/clientloop.c +++ b/clientloop.c @@ -59,7 +59,7 @@ */ #include "includes.h" -RCSID("$OpenBSD: clientloop.c,v 1.65 2001/04/20 07:17:51 djm Exp $"); +RCSID("$OpenBSD: clientloop.c,v 1.66 2001/04/29 19:16:52 markus Exp $"); #include "ssh.h" #include "ssh1.h" @@ -1154,8 +1154,10 @@ client_input_channel_open(int type, int plen, void *ctxt) packet_start(SSH2_MSG_CHANNEL_OPEN_FAILURE); packet_put_int(rchan); packet_put_int(SSH2_OPEN_ADMINISTRATIVELY_PROHIBITED); - packet_put_cstring("bla bla"); - packet_put_cstring(""); + if (!(datafellows & SSH_BUG_OPENFAILURE)) { + packet_put_cstring("bla bla"); + packet_put_cstring(""); + } packet_send(); } xfree(ctype); diff --git a/compat.c b/compat.c index f5eeda0eb..683da100f 100644 --- a/compat.c +++ b/compat.c @@ -23,7 +23,7 @@ */ #include "includes.h" -RCSID("$OpenBSD: compat.c,v 1.47 2001/04/18 23:43:25 markus Exp $"); +RCSID("$OpenBSD: compat.c,v 1.48 2001/04/29 19:16:52 markus Exp $"); #ifdef HAVE_LIBPCRE # include @@ -93,12 +93,12 @@ compat_datafellows(const char *version) SSH_OLD_SESSIONID|SSH_BUG_DEBUG| SSH_BUG_PKSERVICE|SSH_BUG_X11FWD| SSH_BUG_PKOK|SSH_BUG_RSASIGMD5| - SSH_BUG_HBSERVICE }, + SSH_BUG_HBSERVICE|SSH_BUG_OPENFAILURE }, { "^2\\.0\\.", SSH_BUG_SIGBLOB|SSH_BUG_HMAC| SSH_OLD_SESSIONID|SSH_BUG_DEBUG| SSH_BUG_PKSERVICE|SSH_BUG_X11FWD| SSH_BUG_PKAUTH|SSH_BUG_PKOK| - SSH_BUG_RSASIGMD5 }, + SSH_BUG_RSASIGMD5|SSH_BUG_OPENFAILURE }, { "^2\\.[23]\\.0", SSH_BUG_HMAC|SSH_BUG_RSASIGMD5 }, { "^2\\.3\\.", SSH_BUG_RSASIGMD5 }, { "^2\\.[2-9]\\.", 0 }, diff --git a/compat.h b/compat.h index fc6f3344f..fa509c247 100644 --- a/compat.h +++ b/compat.h @@ -21,7 +21,7 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -/* RCSID("$OpenBSD: compat.h,v 1.23 2001/04/12 19:15:24 markus Exp $"); */ +/* RCSID("$OpenBSD: compat.h,v 1.24 2001/04/29 19:16:52 markus Exp $"); */ #ifndef COMPAT_H #define COMPAT_H @@ -31,23 +31,24 @@ #define SSH_PROTO_1_PREFERRED 0x02 #define SSH_PROTO_2 0x04 -#define SSH_BUG_SIGBLOB 0x0001 -#define SSH_BUG_PKSERVICE 0x0002 -#define SSH_BUG_HMAC 0x0004 -#define SSH_BUG_X11FWD 0x0008 -#define SSH_OLD_SESSIONID 0x0010 -#define SSH_BUG_PKAUTH 0x0020 -#define SSH_BUG_DEBUG 0x0040 -#define SSH_BUG_BANNER 0x0080 -#define SSH_BUG_IGNOREMSG 0x0100 -#define SSH_BUG_PKOK 0x0200 -#define SSH_BUG_PASSWORDPAD 0x0400 -#define SSH_BUG_SCANNER 0x0800 -#define SSH_BUG_BIGENDIANAES 0x1000 -#define SSH_BUG_RSASIGMD5 0x2000 -#define SSH_OLD_DHGEX 0x4000 -#define SSH_BUG_NOREKEY 0x8000 -#define SSH_BUG_HBSERVICE 0x10000 +#define SSH_BUG_SIGBLOB 0x00000001 +#define SSH_BUG_PKSERVICE 0x00000002 +#define SSH_BUG_HMAC 0x00000004 +#define SSH_BUG_X11FWD 0x00000008 +#define SSH_OLD_SESSIONID 0x00000010 +#define SSH_BUG_PKAUTH 0x00000020 +#define SSH_BUG_DEBUG 0x00000040 +#define SSH_BUG_BANNER 0x00000080 +#define SSH_BUG_IGNOREMSG 0x00000100 +#define SSH_BUG_PKOK 0x00000200 +#define SSH_BUG_PASSWORDPAD 0x00000400 +#define SSH_BUG_SCANNER 0x00000800 +#define SSH_BUG_BIGENDIANAES 0x00001000 +#define SSH_BUG_RSASIGMD5 0x00002000 +#define SSH_OLD_DHGEX 0x00004000 +#define SSH_BUG_NOREKEY 0x00008000 +#define SSH_BUG_HBSERVICE 0x00010000 +#define SSH_BUG_OPENFAILURE 0x00020000 void enable_compat13(void); void enable_compat20(void); diff --git a/serverloop.c b/serverloop.c index 1687fd102..2ca892e5d 100644 --- a/serverloop.c +++ b/serverloop.c @@ -35,7 +35,7 @@ */ #include "includes.h" -RCSID("$OpenBSD: serverloop.c,v 1.62 2001/04/29 18:32:52 markus Exp $"); +RCSID("$OpenBSD: serverloop.c,v 1.63 2001/04/29 19:16:52 markus Exp $"); #include "xmalloc.h" #include "packet.h" @@ -894,8 +894,10 @@ server_input_channel_open(int type, int plen, void *ctxt) packet_start(SSH2_MSG_CHANNEL_OPEN_FAILURE); packet_put_int(rchan); packet_put_int(SSH2_OPEN_ADMINISTRATIVELY_PROHIBITED); - packet_put_cstring("bla bla"); - packet_put_cstring(""); + if (!(datafellows & SSH_BUG_OPENFAILURE)) { + packet_put_cstring("bla bla"); + packet_put_cstring(""); + } packet_send(); } xfree(ctype);