Get rid of some signed/unsigned comparison warnings.
[oweals/openssl.git] / crypto / bn / bn_prime.c
index 43eb9e6dfd0bf5eba8220db8217e04043c403f2d..4430e90df5553495faf4d6fe948bada2a0f605bd 100644 (file)
@@ -142,6 +142,8 @@ int BN_GENCB_call(BN_GENCB *cb, int a, int b)
                {
        case 1:
                /* Deprecated-style callbacks */
+               if(!cb->cb.cb_1)
+                       return 1;
                cb->cb.cb_1(a, b, cb->arg);
                return 1;
        case 2:
@@ -163,9 +165,9 @@ int BN_generate_prime_ex(BIGNUM *ret, int bits, int safe,
        BN_CTX *ctx;
        int checks = BN_prime_checks_for_size(bits);
 
+       BN_init(&t);
        ctx=BN_CTX_new();
        if (ctx == NULL) goto err;
-       BN_init(&t);
 loop: 
        /* make a random number and set the top and bottom bits */
        if (add == NULL)
@@ -224,6 +226,7 @@ loop:
 err:
        BN_free(&t);
        if (ctx != NULL) BN_CTX_free(ctx);
+       bn_check_top(ret);
        return found;
        }
 
@@ -361,6 +364,7 @@ static int witness(BIGNUM *w, const BIGNUM *a, const BIGNUM *a1,
                }
        /* If we get here, 'w' is the (a-1)/2-th power of the original 'w',
         * and it is neither -1 nor +1 -- so 'a' cannot be prime */
+       bn_check_top(w);
        return 1;
        }
 
@@ -392,6 +396,7 @@ again:
                        }
                }
        if (!BN_add_word(rnd,delta)) return(0);
+       bn_check_top(rnd);
        return(1);
        }
 
@@ -429,6 +434,7 @@ static int probable_prime_dh(BIGNUM *rnd, int bits,
        ret=1;
 err:
        BN_CTX_end(ctx);
+       bn_check_top(rnd);
        return(ret);
        }
 
@@ -480,5 +486,6 @@ static int probable_prime_dh_safe(BIGNUM *p, int bits, const BIGNUM *padd,
        ret=1;
 err:
        BN_CTX_end(ctx);
+       bn_check_top(p);
        return(ret);
        }