diff options
author | Damien Miller <djm@mindrot.org> | 2000-05-09 11:02:59 +1000 |
---|---|---|
committer | Damien Miller <djm@mindrot.org> | 2000-05-09 11:02:59 +1000 |
commit | 30c3d429306bb4afe71c18db92816b981f7b6d9d (patch) | |
tree | a65f45e0073cb55ad42957a36b4636ff21405108 /ssh-keygen.c | |
parent | 61e50f10c276009bf9472fdd797bf6be60fc2a83 (diff) |
- OpenBSD CVS update
- markus@cvs.openbsd.org
[cipher.h myproposal.h readconf.c readconf.h servconf.c ssh.1 ssh.c]
[ssh.h sshconnect1.c sshconnect2.c sshd.8]
- complain about invalid ciphers in SSH1 (e.g. arcfour is SSH2 only)
- hugh@cvs.openbsd.org
[ssh.1]
- zap typo
[ssh-keygen.1]
- One last nit fix. (markus approved)
[sshd.8]
- some markus certified spelling adjustments
- markus@cvs.openbsd.org
[auth2.c channels.c clientloop.c compat compat.h dsa.c kex.c]
[sshconnect2.c ]
- bug compat w/ ssh-2.0.13 x11, split out bugs
[nchan.c]
- no drain if ibuf_empty, fixes x11fwd problems; tests by fries@
[ssh-keygen.c]
- handle escapes in real and original key format, ok millert@
[version.h]
- OpenSSH-2.1
Diffstat (limited to 'ssh-keygen.c')
-rw-r--r-- | ssh-keygen.c | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/ssh-keygen.c b/ssh-keygen.c index a2599dab9..351036dd4 100644 --- a/ssh-keygen.c +++ b/ssh-keygen.c | |||
@@ -7,7 +7,7 @@ | |||
7 | */ | 7 | */ |
8 | 8 | ||
9 | #include "includes.h" | 9 | #include "includes.h" |
10 | RCSID("$Id: ssh-keygen.c,v 1.17 2000/05/07 02:03:19 damien Exp $"); | 10 | RCSID("$Id: ssh-keygen.c,v 1.18 2000/05/09 01:03:02 damien Exp $"); |
11 | 11 | ||
12 | #include <openssl/evp.h> | 12 | #include <openssl/evp.h> |
13 | #include <openssl/pem.h> | 13 | #include <openssl/pem.h> |
@@ -148,6 +148,7 @@ do_convert_from_ssh2(struct passwd *pw) | |||
148 | char blob[8096]; | 148 | char blob[8096]; |
149 | char encoded[8096]; | 149 | char encoded[8096]; |
150 | struct stat st; | 150 | struct stat st; |
151 | int escaped = 0; | ||
151 | FILE *fp; | 152 | FILE *fp; |
152 | 153 | ||
153 | if (!have_identity) | 154 | if (!have_identity) |
@@ -163,14 +164,21 @@ do_convert_from_ssh2(struct passwd *pw) | |||
163 | } | 164 | } |
164 | encoded[0] = '\0'; | 165 | encoded[0] = '\0'; |
165 | while (fgets(line, sizeof(line), fp)) { | 166 | while (fgets(line, sizeof(line), fp)) { |
167 | if (!(p = strchr(line, '\n'))) { | ||
168 | fprintf(stderr, "input line too long.\n"); | ||
169 | exit(1); | ||
170 | } | ||
171 | if (p > line && p[-1] == '\\') | ||
172 | escaped++; | ||
166 | if (strncmp(line, "----", 4) == 0 || | 173 | if (strncmp(line, "----", 4) == 0 || |
167 | strstr(line, ": ") != NULL) { | 174 | strstr(line, ": ") != NULL) { |
168 | fprintf(stderr, "ignore: %s", line); | 175 | fprintf(stderr, "ignore: %s", line); |
169 | continue; | 176 | continue; |
170 | } | 177 | } |
171 | if (!(p = strchr(line, '\n'))) { | 178 | if (escaped) { |
172 | fprintf(stderr, "input line too long.\n"); | 179 | escaped--; |
173 | exit(1); | 180 | fprintf(stderr, "escaped: %s", line); |
181 | continue; | ||
174 | } | 182 | } |
175 | *p = '\0'; | 183 | *p = '\0'; |
176 | strlcat(encoded, line, sizeof(encoded)); | 184 | strlcat(encoded, line, sizeof(encoded)); |