diff options
author | kris <kris@FreeBSD.org> | 2000-05-15 04:37:24 +0000 |
---|---|---|
committer | kris <kris@FreeBSD.org> | 2000-05-15 04:37:24 +0000 |
commit | 4dc8aa85ced77e9e02dea6939edd4d3564b5086e (patch) | |
tree | 772b9de8852fb4c32957c00639a4fd5460f8a62b /crypto/openssh/compat.c | |
parent | b201b15ee1575ab28ed4f9b5a7d430e835a7c7ae (diff) | |
download | FreeBSD-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.c | 66 |
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; +} |