summaryrefslogtreecommitdiffstats
path: root/crypto/openssh/compat.c
diff options
context:
space:
mode:
authorkris <kris@FreeBSD.org>2000-05-15 04:37:24 +0000
committerkris <kris@FreeBSD.org>2000-05-15 04:37:24 +0000
commit4dc8aa85ced77e9e02dea6939edd4d3564b5086e (patch)
tree772b9de8852fb4c32957c00639a4fd5460f8a62b /crypto/openssh/compat.c
parentb201b15ee1575ab28ed4f9b5a7d430e835a7c7ae (diff)
downloadFreeBSD-src-4dc8aa85ced77e9e02dea6939edd4d3564b5086e.zip
FreeBSD-src-4dc8aa85ced77e9e02dea6939edd4d3564b5086e.tar.gz
Initial import of OpenSSH v2.1.
Diffstat (limited to 'crypto/openssh/compat.c')
-rw-r--r--crypto/openssh/compat.c66
1 files changed, 64 insertions, 2 deletions
diff --git a/crypto/openssh/compat.c b/crypto/openssh/compat.c
index 7e21fd0..33e509c 100644
--- a/crypto/openssh/compat.c
+++ b/crypto/openssh/compat.c
@@ -28,15 +28,77 @@
*/
#include "includes.h"
-RCSID("$Id: compat.c,v 1.5 1999/11/24 16:15:24 markus Exp $");
+RCSID("$Id: compat.c,v 1.13 2000/05/08 17:42:24 markus Exp $");
#include "ssh.h"
+#include "packet.h"
+#include "xmalloc.h"
+#include "compat.h"
int compat13 = 0;
+int compat20 = 0;
+int datafellows = 0;
-void
+void
+enable_compat20(void)
+{
+ verbose("Enabling compatibility mode for protocol 2.0");
+ compat20 = 1;
+}
+void
enable_compat13(void)
{
verbose("Enabling compatibility mode for protocol 1.3");
compat13 = 1;
}
+/* datafellows bug compatibility */
+void
+compat_datafellows(const char *version)
+{
+ int i;
+ size_t len;
+ struct {
+ char *version;
+ int bugs;
+ } check[] = {
+ {"2.1.0", SSH_BUG_SIGBLOB|SSH_BUG_HMAC},
+ {"2.0.1", SSH_BUG_SIGBLOB|SSH_BUG_HMAC|SSH_BUG_PUBKEYAUTH|SSH_BUG_X11FWD},
+ {NULL, 0}
+ };
+ for (i = 0; check[i].version; i++) {
+ len = strlen(check[i].version);
+ if (strlen(version) >= len &&
+ (strncmp(version, check[i].version, len) == 0)) {
+ verbose("datafellows: %.200s", version);
+ datafellows = check[i].bugs;
+ return;
+ }
+ }
+}
+
+#define SEP ","
+int
+proto_spec(const char *spec)
+{
+ char *s = xstrdup(spec);
+ char *p;
+ int ret = SSH_PROTO_UNKNOWN;
+
+ for ((p = strtok(s, SEP)); p; (p = strtok(NULL, SEP))) {
+ switch(atoi(p)) {
+ case 1:
+ if (ret == SSH_PROTO_UNKNOWN)
+ ret |= SSH_PROTO_1_PREFERRED;
+ ret |= SSH_PROTO_1;
+ break;
+ case 2:
+ ret |= SSH_PROTO_2;
+ break;
+ default:
+ log("ignoring bad proto spec: '%s'.", p);
+ break;
+ }
+ }
+ xfree(s);
+ return ret;
+}
OpenPOWER on IntegriCloud