summaryrefslogtreecommitdiff
path: root/usr.bin
diff options
context:
space:
mode:
authorMarkus Friedl <markus@cvs.openbsd.org>2008-09-11 14:22:38 +0000
committerMarkus Friedl <markus@cvs.openbsd.org>2008-09-11 14:22:38 +0000
commitb8732efbae97ae121cdc548c853e65cef134629e (patch)
treec33555091eb424e6e374a80c4c5c5a8a5c444e35 /usr.bin
parente72a4051ae0487d428e449caf6b68e77f885433b (diff)
only send eow and no-more-sessions requests to openssh 5 and newer;
fixes interop problems with broken ssh v2 implementations; ok djm@
Diffstat (limited to 'usr.bin')
-rw-r--r--usr.bin/ssh/compat.c5
-rw-r--r--usr.bin/ssh/compat.h3
-rw-r--r--usr.bin/ssh/nchan.c4
-rw-r--r--usr.bin/ssh/ssh.c5
4 files changed, 11 insertions, 6 deletions
diff --git a/usr.bin/ssh/compat.c b/usr.bin/ssh/compat.c
index 2c086045354..11b26281977 100644
--- a/usr.bin/ssh/compat.c
+++ b/usr.bin/ssh/compat.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: compat.c,v 1.77 2006/12/12 03:58:42 djm Exp $ */
+/* $OpenBSD: compat.c,v 1.78 2008/09/11 14:22:37 markus Exp $ */
/*
* Copyright (c) 1999, 2000, 2001, 2002 Markus Friedl. All rights reserved.
*
@@ -89,7 +89,8 @@ compat_datafellows(const char *version)
"OpenSSH_3.1*", SSH_BUG_EXTEOF|SSH_OLD_FORWARD_ADDR},
{ "OpenSSH_3.*", SSH_OLD_FORWARD_ADDR },
{ "Sun_SSH_1.0*", SSH_BUG_NOREKEY|SSH_BUG_EXTEOF},
- { "OpenSSH*", 0 },
+ { "OpenSSH_4*", 0 },
+ { "OpenSSH*", SSH_NEW_OPENSSH },
{ "*MindTerm*", 0 },
{ "2.1.0*", SSH_BUG_SIGBLOB|SSH_BUG_HMAC|
SSH_OLD_SESSIONID|SSH_BUG_DEBUG|
diff --git a/usr.bin/ssh/compat.h b/usr.bin/ssh/compat.h
index 4d8ebc908a4..16cf282a7ae 100644
--- a/usr.bin/ssh/compat.h
+++ b/usr.bin/ssh/compat.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: compat.h,v 1.41 2006/12/12 03:58:42 djm Exp $ */
+/* $OpenBSD: compat.h,v 1.42 2008/09/11 14:22:37 markus Exp $ */
/*
* Copyright (c) 1999, 2000, 2001 Markus Friedl. All rights reserved.
@@ -57,6 +57,7 @@
#define SSH_BUG_FIRSTKEX 0x00800000
#define SSH_OLD_FORWARD_ADDR 0x01000000
#define SSH_BUG_RFWD_ADDR 0x02000000
+#define SSH_NEW_OPENSSH 0x04000000
void enable_compat13(void);
void enable_compat20(void);
diff --git a/usr.bin/ssh/nchan.c b/usr.bin/ssh/nchan.c
index 7d3a92f93db..72c842ffab1 100644
--- a/usr.bin/ssh/nchan.c
+++ b/usr.bin/ssh/nchan.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: nchan.c,v 1.60 2008/06/30 12:16:02 djm Exp $ */
+/* $OpenBSD: nchan.c,v 1.61 2008/09/11 14:22:37 markus Exp $ */
/*
* Copyright (c) 1999, 2000, 2001, 2002 Markus Friedl. All rights reserved.
*
@@ -385,6 +385,8 @@ chan_send_eow2(Channel *c)
c->self);
return;
}
+ if (!(datafellows & SSH_NEW_OPENSSH))
+ return;
packet_start(SSH2_MSG_CHANNEL_REQUEST);
packet_put_int(c->remote_id);
packet_put_cstring("eow@openssh.com");
diff --git a/usr.bin/ssh/ssh.c b/usr.bin/ssh/ssh.c
index 403eb69b71e..42e6da01e98 100644
--- a/usr.bin/ssh/ssh.c
+++ b/usr.bin/ssh/ssh.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: ssh.c,v 1.318 2008/07/02 13:47:39 djm Exp $ */
+/* $OpenBSD: ssh.c,v 1.319 2008/09/11 14:22:37 markus Exp $ */
/*
* Author: Tatu Ylonen <ylo@cs.hut.fi>
* Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -1181,7 +1181,8 @@ ssh_session2(void)
id = ssh_session2_open();
/* If we don't expect to open a new session, then disallow it */
- if (options.control_master == SSHCTL_MASTER_NO) {
+ if (options.control_master == SSHCTL_MASTER_NO &&
+ (datafellows & SSH_NEW_OPENSSH)) {
debug("Requesting no-more-sessions@openssh.com");
packet_start(SSH2_MSG_GLOBAL_REQUEST);
packet_put_cstring("no-more-sessions@openssh.com");