diff options
author | mouring <mouring> | 2002-04-02 20:26:26 +0000 |
---|---|---|
committer | mouring <mouring> | 2002-04-02 20:26:26 +0000 |
commit | ae952f7fd308ac0900c03ed16d1ff95ba1c6faed (patch) | |
tree | 72b9d7489937ae43faf975300d61028ba9400c68 /ssh-keygen.c | |
parent | 466db0b91e308c21c8a0234edf88e83447c8c570 (diff) | |
download | openssh-ae952f7fd308ac0900c03ed16d1ff95ba1c6faed.tar.gz |
- markus@cvs.openbsd.org 2002/03/27 22:21:45
[ssh-keygen.c]
try to import keys with extra trailing === (seen with ssh.com < 2.0.12)
Diffstat (limited to 'ssh-keygen.c')
-rw-r--r-- | ssh-keygen.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/ssh-keygen.c b/ssh-keygen.c index 1a8a7312..250e53e1 100644 --- a/ssh-keygen.c +++ b/ssh-keygen.c @@ -12,7 +12,7 @@ */ #include "includes.h" -RCSID("$OpenBSD: ssh-keygen.c,v 1.97 2002/03/25 17:34:27 markus Exp $"); +RCSID("$OpenBSD: ssh-keygen.c,v 1.98 2002/03/27 22:21:45 markus Exp $"); #include <openssl/evp.h> #include <openssl/pem.h> @@ -290,6 +290,7 @@ do_convert_from_ssh2(struct passwd *pw) { Key *k; int blen; + u_int len; char line[1024], *p; u_char blob[8096]; char encoded[8096]; @@ -334,6 +335,12 @@ do_convert_from_ssh2(struct passwd *pw) *p = '\0'; strlcat(encoded, line, sizeof(encoded)); } + len = strlen(encoded); + if (((len % 4) == 3) && + (encoded[len-1] == '=') && + (encoded[len-2] == '=') && + (encoded[len-3] == '=')) + encoded[len-3] = '\0'; blen = uudecode(encoded, blob, sizeof(blob)); if (blen < 0) { fprintf(stderr, "uudecode failed.\n"); |