X-Git-Url: https://git.distorted.org.uk/u/mdw/putty/blobdiff_plain/9febf7ed49d2d2f13d9addc7714acd492c2c7111..14ec1d8392d27cd5f9dc923ff7dc6416827d4060:/sshrsa.c diff --git a/sshrsa.c b/sshrsa.c index c4a469ee..3bd971f8 100644 --- a/sshrsa.c +++ b/sshrsa.c @@ -415,7 +415,7 @@ int rsa_verify(struct RSAKey *key) ed = modmul(key->exponent, key->private_exponent, pm1); freebn(pm1); cmp = bignum_cmp(ed, One); - sfree(ed); + freebn(ed); if (cmp != 0) return 0; @@ -424,7 +424,7 @@ int rsa_verify(struct RSAKey *key) ed = modmul(key->exponent, key->private_exponent, qm1); freebn(qm1); cmp = bignum_cmp(ed, One); - sfree(ed); + freebn(ed); if (cmp != 0) return 0; @@ -450,7 +450,7 @@ int rsa_verify(struct RSAKey *key) */ n = modmul(key->iqmp, key->q, key->p); cmp = bignum_cmp(n, One); - sfree(n); + freebn(n); if (cmp != 0) return 0; @@ -558,8 +558,6 @@ static void *rsa2_newkey(char *data, int len) struct RSAKey *rsa; rsa = snew(struct RSAKey); - if (!rsa) - return NULL; getstring(&data, &len, &p, &slen); if (!p || slen != 7 || memcmp(p, "ssh-rsa", 7)) { @@ -694,8 +692,6 @@ static void *rsa2_openssh_createkey(unsigned char **blob, int *len) struct RSAKey *rsa; rsa = snew(struct RSAKey); - if (!rsa) - return NULL; rsa->comment = NULL; rsa->modulus = getmp(b, len); @@ -707,13 +703,12 @@ static void *rsa2_openssh_createkey(unsigned char **blob, int *len) if (!rsa->modulus || !rsa->exponent || !rsa->private_exponent || !rsa->iqmp || !rsa->p || !rsa->q) { - sfree(rsa->modulus); - sfree(rsa->exponent); - sfree(rsa->private_exponent); - sfree(rsa->iqmp); - sfree(rsa->p); - sfree(rsa->q); - sfree(rsa); + rsa2_freekey(rsa); + return NULL; + } + + if (!rsa_verify(rsa)) { + rsa2_freekey(rsa); return NULL; }