1
0
mirror of https://git.tartarus.org/simon/putty.git synced 2025-04-19 03:58:05 -05:00

Fix externally added SSH1 keys in Pageant. I have no idea how this

code _ever_ worked before! But it's been like this for four months
and nobody has noticed, including me. That's quite spooky.

[originally from svn r1219]
This commit is contained in:
Simon Tatham 2001-08-28 08:36:27 +00:00
parent ea27f048f9
commit 5c72d5adc5

View File

@ -650,16 +650,19 @@ static void answer_msg(void *msg)
{ {
struct RSAKey *key; struct RSAKey *key;
char *comment; char *comment;
int commentlen;
key = smalloc(sizeof(struct RSAKey)); key = smalloc(sizeof(struct RSAKey));
memset(key, 0, sizeof(key)); memset(key, 0, sizeof(key));
p += makekey(p, key, NULL, 1); p += makekey(p, key, NULL, 1);
p += makeprivate(p, key); p += makeprivate(p, key);
p += ssh1_read_bignum(p, key->iqmp); /* p^-1 mod q */ p += ssh1_read_bignum(p, &key->iqmp); /* p^-1 mod q */
p += ssh1_read_bignum(p, key->p); /* p */ p += ssh1_read_bignum(p, &key->p); /* p */
p += ssh1_read_bignum(p, key->q); /* q */ p += ssh1_read_bignum(p, &key->q); /* q */
comment = smalloc(GET_32BIT(p)); commentlen = GET_32BIT(p);
comment = smalloc(commentlen+1);
if (comment) { if (comment) {
memcpy(comment, p + 4, GET_32BIT(p)); memcpy(comment, p + 4, commentlen);
comment[commentlen] = '\0';
key->comment = comment; key->comment = comment;
} }
PUT_32BIT(ret, 1); PUT_32BIT(ret, 1);