]> asedeno.scripts.mit.edu Git - PuTTY.git/blobdiff - sshrsa.c
Bump version number for 0.65 release.
[PuTTY.git] / sshrsa.c
index fb0bcaa9d1d022986e8a8a50b16e67dc147c5649..25f9cf7e63b9a6cf8c2fa49a3387f77d06337cfa 100644 (file)
--- a/sshrsa.c
+++ b/sshrsa.c
@@ -264,6 +264,7 @@ static Bignum rsa_privkey_op(Bignum input, struct RSAKey *key)
            bitsleft--;
            bignum_set_bit(random, bits, v);
        }
+        bn_restore_invariant(random);
 
        /*
         * Now check that this number is strictly greater than
@@ -561,6 +562,8 @@ static Bignum getmp(char **data, int *datalen)
     return b;
 }
 
+static void rsa2_freekey(void *key);   /* forward reference */
+
 static void *rsa2_newkey(char *data, int len)
 {
     char *p;
@@ -580,6 +583,11 @@ static void *rsa2_newkey(char *data, int len)
     rsa->p = rsa->q = rsa->iqmp = NULL;
     rsa->comment = NULL;
 
+    if (!rsa->exponent || !rsa->modulus) {
+        rsa2_freekey(rsa);
+        return NULL;
+    }
+
     return rsa;
 }