crypto/bn/bn_sqrt.c:148: error: INTEGER_OVERFLOW_L2
  ([0, `p->top`] - 1):unsigned64 by call to `BN_mod_exp`.
Showing all 21 steps of the trace


crypto/bn/bn_sqrt.c:62:1: Parameter `p->top`
60.   
61.   
62. > BIGNUM *BN_mod_sqrt(BIGNUM *in, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx) 
63.   /* Returns 'ret' such that
64.    *      ret^2 == a (mod p),

crypto/bn/bn_sqrt.c:128:7: Call
126.   
127.   	/* A = a mod p */
128.   	if (!BN_nnmod(A, a, p, ctx)) goto end;
             ^
129.   
130.   	/* now write  |p| - 1  as  2^e*q  where  q  is odd */

crypto/bn/bn_mod.c:127:1: Parameter `d->top`
  125.   
  126.   
  127. > int BN_nnmod(BIGNUM *r, const BIGNUM *m, const BIGNUM *d, BN_CTX *ctx)
  128.   	{
  129.   	/* like BN_mod, but returns non-negative remainder

crypto/bn/bn_mod.c:132:8: Call
  130.   	 * (i.e.,  0 <= r < |d|  always holds) */
  131.   
  132.   	if (!(BN_mod(r,m,d,ctx)))
                ^
  133.   		return 0;
  134.   	if (!r->neg)

crypto/bn/bn_div.c:181:1: Parameter `divisor->top`
    179.   static int BN_div_no_branch(BIGNUM *dv, BIGNUM *rm, const BIGNUM *num,
    180.           const BIGNUM *divisor, BN_CTX *ctx);
    181. > int BN_div(BIGNUM *dv, BIGNUM *rm, const BIGNUM *num, const BIGNUM *divisor,
    182.   	   BN_CTX *ctx)
    183.   	{

crypto/bn/bn_sqrt.c:132:10: Call
130.   	/* now write  |p| - 1  as  2^e*q  where  q  is odd */
131.   	e = 1;
132.   	while (!BN_is_bit_set(p, e))
                ^
133.   		e++;
134.   	/* we'll set  q  later (if needed) */

crypto/bn/bn_lib.c:757:1: Parameter `a->top`
  755.   	}
  756.   
  757. > int BN_is_bit_set(const BIGNUM *a, int n)
  758.   	{
  759.   	int i,j;

crypto/bn/bn_sqrt.c:145:8: Call
143.   		 * so we can use exponent  (|p|+1)/4,  i.e.  (|p|-3)/4 + 1.
144.   		 */
145.   		if (!BN_rshift(q, p, 2)) goto end;
              ^
146.   		q->neg = 0;
147.   		if (!BN_add_word(q, 1)) goto end;

crypto/bn/bn_shift.c:168:1: Parameter `r->dmax`
  166.   	}
  167.   
  168. > int BN_rshift(BIGNUM *r, const BIGNUM *a, int n)
  169.   	{
  170.   	int i,j,nw,lb,rb;

crypto/bn/bn_sqrt.c:148:8: Call
146.   		q->neg = 0;
147.   		if (!BN_add_word(q, 1)) goto end;
148.   		if (!BN_mod_exp(ret, A, q, p, ctx)) goto end;
              ^
149.   		err = 0;
150.   		goto vrfy;

crypto/bn/bn_exp.c:163:1: Parameter `m->top`
  161.   
  162.   
  163. > int BN_mod_exp(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, const BIGNUM *m,
  164.   	       BN_CTX *ctx)
  165.   	{

crypto/bn/bn_exp.c:228:9: Call
  226.   #endif
  227.   #ifdef RECP_MUL_MOD
  228.   		{ ret=BN_mod_exp_recp(r,a,p,m,ctx); }
                 ^
  229.   #else
  230.   		{ ret=BN_mod_exp_simple(r,a,p,m,ctx); }

crypto/bn/bn_exp.c:238:1: Parameter `m->top`
    236.   
    237.   
    238. > int BN_mod_exp_recp(BIGNUM *r, const BIGNUM *a, const BIGNUM *p,
    239.   		    const BIGNUM *m, BN_CTX *ctx)
    240.   	{

crypto/bn/bn_exp.c:278:7: Call
    276.   	else
    277.   		{
    278.   		if (BN_RECP_CTX_set(&recp,m,ctx) <= 0) goto err;
                 ^
    279.   		}
    280.   

crypto/bn/bn_recp.c:94:1: Parameter `d->top`
      92.   	}
      93.   
      94. > int BN_RECP_CTX_set(BN_RECP_CTX *recp, const BIGNUM *d, BN_CTX *ctx)
      95.   	{
      96.   	if (!BN_copy(&(recp->N),d)) return 0;

crypto/bn/bn_recp.c:96:7: Call
      94.   int BN_RECP_CTX_set(BN_RECP_CTX *recp, const BIGNUM *d, BN_CTX *ctx)
      95.   	{
      96.   	if (!BN_copy(&(recp->N),d)) return 0;
                  ^
      97.   	BN_zero(&(recp->Nr));
      98.   	recp->num_bits=BN_num_bits(d);

crypto/bn/bn_lib.c:497:1: Parameter `a->dmax`
        495.   	}
        496.   
        497. > BIGNUM *BN_copy(BIGNUM *a, const BIGNUM *b)
        498.   	{
        499.   	int i;

crypto/bn/bn_recp.c:98:17: Call
      96.   	if (!BN_copy(&(recp->N),d)) return 0;
      97.   	BN_zero(&(recp->Nr));
      98.   	recp->num_bits=BN_num_bits(d);
                             ^
      99.   	recp->shift=0;
      100.   	return(1);

crypto/bn/bn_lib.c:248:1: <LHS trace>
246.   	}
247.   
248. > int BN_num_bits(const BIGNUM *a)
249.   	{
250.   	int i = a->top - 1;

crypto/bn/bn_lib.c:248:1: Parameter `a->top`
        246.   	}
        247.   
        248. > int BN_num_bits(const BIGNUM *a)
        249.   	{
        250.   	int i = a->top - 1;

crypto/bn/bn_lib.c:250:2: Binary operation: ([0, p->top] - 1):unsigned64 by call to `BN_mod_exp` 
        248.   int BN_num_bits(const BIGNUM *a)
        249.   	{
        250.   	int i = a->top - 1;
                ^
        251.   	bn_check_top(a);
        252.   
