diff options
Diffstat (limited to 'compat.c')
-rw-r--r-- | compat.c | 21 |
1 files changed, 12 insertions, 9 deletions
@@ -28,7 +28,7 @@ | |||
28 | */ | 28 | */ |
29 | 29 | ||
30 | #include "includes.h" | 30 | #include "includes.h" |
31 | RCSID("$Id: compat.c,v 1.9 2000/04/29 13:57:10 damien Exp $"); | 31 | RCSID("$Id: compat.c,v 1.10 2000/05/09 01:03:00 damien Exp $"); |
32 | 32 | ||
33 | #include "ssh.h" | 33 | #include "ssh.h" |
34 | #include "packet.h" | 34 | #include "packet.h" |
@@ -57,17 +57,20 @@ compat_datafellows(const char *version) | |||
57 | { | 57 | { |
58 | int i; | 58 | int i; |
59 | size_t len; | 59 | size_t len; |
60 | static const char *check[] = { | 60 | struct { |
61 | "2.0.1", | 61 | char *version; |
62 | "2.1.0", | 62 | int bugs; |
63 | NULL | 63 | } check[] = { |
64 | {"2.1.0", SSH_BUG_SIGBLOB|SSH_BUG_HMAC}, | ||
65 | {"2.0.1", SSH_BUG_SIGBLOB|SSH_BUG_HMAC|SSH_BUG_PUBKEYAUTH|SSH_BUG_X11FWD}, | ||
66 | {NULL, 0} | ||
64 | }; | 67 | }; |
65 | for (i = 0; check[i]; i++) { | 68 | for (i = 0; check[i].version; i++) { |
66 | len = strlen(check[i]); | 69 | len = strlen(check[i].version); |
67 | if (strlen(version) >= len && | 70 | if (strlen(version) >= len && |
68 | (strncmp(version, check[i], len) == 0)) { | 71 | (strncmp(version, check[i].version, len) == 0)) { |
69 | verbose("datafellows: %.200s", version); | 72 | verbose("datafellows: %.200s", version); |
70 | datafellows = 1; | 73 | datafellows = check[i].bugs; |
71 | return; | 74 | return; |
72 | } | 75 | } |
73 | } | 76 | } |