X-Git-Url: https://asedeno.scripts.mit.edu/gitweb/?a=blobdiff_plain;f=sshrsa.c;h=4f95fb38aa3c9897e2bcc0f69f740ea31bad0510;hb=8316deb3399fe1d0c406132cf2e795a76de26b64;hp=f684c2afd109dafd47a1fef702d45513bf1b0a18;hpb=e2cd7e404e90a4ba2669e3f010b3e94913c0fa25;p=PuTTY.git diff --git a/sshrsa.c b/sshrsa.c index f684c2af..4f95fb38 100644 --- a/sshrsa.c +++ b/sshrsa.c @@ -54,7 +54,7 @@ int makekey(unsigned char *data, int len, struct RSAKey *result, } n = ssh1_read_bignum(p, len, result ? &result->modulus : NULL); - if (n < 0 || bignum_bitcount(result->modulus) == 0) return -1; + if (n < 0 || (result && bignum_bitcount(result->modulus) == 0)) return -1; if (result) result->bytes = n - 2; if (keystr) @@ -802,6 +802,7 @@ static unsigned char *rsa2_sign(void *key, char *data, int datalen, SHA_Simple(data, datalen, hash); nbytes = (bignum_bitcount(rsa->modulus) - 1) / 8; + assert(1 <= nbytes - 20 - ASN1_LEN); bytes = snewn(nbytes, unsigned char); bytes[0] = 1;