X-Git-Url: https://git.distorted.org.uk/u/mdw/putty/blobdiff_plain/ae0500e538e2fb821ef1ad8529aed7999acf7a19..51e9d3c00a3471f284e89ec1f59f38ca25f10c5f:/sshrsa.c diff --git a/sshrsa.c b/sshrsa.c index f684c2af..b862d3f6 100644 --- a/sshrsa.c +++ b/sshrsa.c @@ -10,18 +10,6 @@ #include "ssh.h" #include "misc.h" -#define GET_32BIT(cp) \ - (((unsigned long)(unsigned char)(cp)[0] << 24) | \ - ((unsigned long)(unsigned char)(cp)[1] << 16) | \ - ((unsigned long)(unsigned char)(cp)[2] << 8) | \ - ((unsigned long)(unsigned char)(cp)[3])) - -#define PUT_32BIT(cp, value) { \ - (cp)[0] = (unsigned char)((value) >> 24); \ - (cp)[1] = (unsigned char)((value) >> 16); \ - (cp)[2] = (unsigned char)((value) >> 8); \ - (cp)[3] = (unsigned char)(value); } - int makekey(unsigned char *data, int len, struct RSAKey *result, unsigned char **keystr, int order) { @@ -54,7 +42,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 +790,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;