crypto/dsa/dsa_ossl.c:237: error: INTEGER_OVERFLOW_L2
  ([0, +oo] - 1):unsigned32 by call to `BN_MONT_CTX_set_locked`.
Showing all 39 steps of the trace


crypto/dsa/dsa_ossl.c:202:1: Parameter `ctx_in->pool.used`
200.   	}
201.   
202. > static int dsa_sign_setup(DSA *dsa, BN_CTX *ctx_in, BIGNUM **kinvp, BIGNUM **rp)
203.   	{
204.   	BN_CTX *ctx;

crypto/dsa/dsa_ossl.c:237:8: Call
235.   	if (dsa->flags & DSA_FLAG_CACHE_MONT_P)
236.   		{
237.   		if (!BN_MONT_CTX_set_locked(&dsa->method_mont_p,
              ^
238.   						CRYPTO_LOCK_DSA,
239.   						dsa->p, ctx))

crypto/bn/bn_mont.c:427:1: Parameter `ctx->pool.used`
  425.   	}
  426.   
  427. > BN_MONT_CTX *BN_MONT_CTX_set_locked(BN_MONT_CTX **pmont, int lock,
  428.   					const BIGNUM *mod, BN_CTX *ctx)
  429.   	{

crypto/bn/bn_mont.c:437:16: Call
  435.   		BN_MONT_CTX *mtmp;
  436.   		mtmp = BN_MONT_CTX_new();
  437.   		if (mtmp && !BN_MONT_CTX_set(mtmp, mod, ctx))
                        ^
  438.   			BN_MONT_CTX_free(mtmp);
  439.   		else

crypto/bn/bn_mont.c:310:1: Parameter `ctx->pool.used`
    308.   	}
    309.   
    310. > int BN_MONT_CTX_set(BN_MONT_CTX *mont, const BIGNUM *mod, BN_CTX *ctx)
    311.   	{
    312.   	int ret = 0;

crypto/bn/bn_mont.c:316:11: Call
    314.   
    315.   	BN_CTX_start(ctx);
    316.   	if((Ri = BN_CTX_get(ctx)) == NULL) goto err;
                     ^
    317.   	R= &(mont->RR);					/* grab RR as a temp */
    318.   	if (!BN_copy(&(mont->N),mod)) goto err;		/* Set N */

crypto/bn/bn_ctx.c:288:1: Parameter `ctx->pool.used`
      286.   	}
      287.   
      288. > BIGNUM *BN_CTX_get(BN_CTX *ctx)
      289.   	{
      290.   	BIGNUM *ret;

crypto/bn/bn_mont.c:370:8: Call
    368.   		tmod.top = buf[0] != 0 ? 1 : 0;
    369.   							/* Ri = R^-1 mod N*/
    370.   		if ((BN_mod_inverse(Ri,R,&tmod,ctx)) == NULL)
                  ^
    371.   			goto err;
    372.   		if (!BN_lshift(Ri,Ri,BN_BITS2)) goto err; /* R*Ri */

crypto/bn/bn_gcd.c:206:1: Parameter `ctx->pool.used`
      204.   
      205.   /* solves ax == 1 (mod n) */
      206. > BIGNUM *BN_mod_inverse(BIGNUM *in,
      207.   	const BIGNUM *a, const BIGNUM *n, BN_CTX *ctx)
      208.   	{

crypto/bn/bn_gcd.c:217:6: Call
      215.   
      216.   	BN_CTX_start(ctx);
      217.   	A = BN_CTX_get(ctx);
                  ^
      218.   	B = BN_CTX_get(ctx);
      219.   	X = BN_CTX_get(ctx);

crypto/bn/bn_ctx.c:288:1: Parameter `ctx->pool.used`
        286.   	}
        287.   
        288. > BIGNUM *BN_CTX_get(BN_CTX *ctx)
        289.   	{
        290.   	BIGNUM *ret;

crypto/bn/bn_gcd.c:218:6: Call
      216.   	BN_CTX_start(ctx);
      217.   	A = BN_CTX_get(ctx);
      218.   	B = BN_CTX_get(ctx);
                  ^
      219.   	X = BN_CTX_get(ctx);
      220.   	D = BN_CTX_get(ctx);

crypto/bn/bn_ctx.c:288:1: Parameter `ctx->pool.used`
        286.   	}
        287.   
        288. > BIGNUM *BN_CTX_get(BN_CTX *ctx)
        289.   	{
        290.   	BIGNUM *ret;

crypto/bn/bn_gcd.c:219:6: Call
      217.   	A = BN_CTX_get(ctx);
      218.   	B = BN_CTX_get(ctx);
      219.   	X = BN_CTX_get(ctx);
                  ^
      220.   	D = BN_CTX_get(ctx);
      221.   	M = BN_CTX_get(ctx);

crypto/bn/bn_ctx.c:288:1: Parameter `ctx->pool.used`
        286.   	}
        287.   
        288. > BIGNUM *BN_CTX_get(BN_CTX *ctx)
        289.   	{
        290.   	BIGNUM *ret;

crypto/bn/bn_gcd.c:220:6: Call
      218.   	B = BN_CTX_get(ctx);
      219.   	X = BN_CTX_get(ctx);
      220.   	D = BN_CTX_get(ctx);
                  ^
      221.   	M = BN_CTX_get(ctx);
      222.   	Y = BN_CTX_get(ctx);

crypto/bn/bn_ctx.c:288:1: Parameter `ctx->pool.used`
        286.   	}
        287.   
        288. > BIGNUM *BN_CTX_get(BN_CTX *ctx)
        289.   	{
        290.   	BIGNUM *ret;

crypto/bn/bn_gcd.c:221:6: Call
      219.   	X = BN_CTX_get(ctx);
      220.   	D = BN_CTX_get(ctx);
      221.   	M = BN_CTX_get(ctx);
                  ^
      222.   	Y = BN_CTX_get(ctx);
      223.   	T = BN_CTX_get(ctx);

crypto/bn/bn_ctx.c:288:1: Parameter `ctx->pool.used`
        286.   	}
        287.   
        288. > BIGNUM *BN_CTX_get(BN_CTX *ctx)
        289.   	{
        290.   	BIGNUM *ret;

crypto/bn/bn_gcd.c:222:6: Call
      220.   	D = BN_CTX_get(ctx);
      221.   	M = BN_CTX_get(ctx);
      222.   	Y = BN_CTX_get(ctx);
                  ^
      223.   	T = BN_CTX_get(ctx);
      224.   	if (T == NULL) goto err;

crypto/bn/bn_ctx.c:288:1: Parameter `ctx->pool.used`
        286.   	}
        287.   
        288. > BIGNUM *BN_CTX_get(BN_CTX *ctx)
        289.   	{
        290.   	BIGNUM *ret;

crypto/bn/bn_gcd.c:223:6: Call
      221.   	M = BN_CTX_get(ctx);
      222.   	Y = BN_CTX_get(ctx);
      223.   	T = BN_CTX_get(ctx);
                  ^
      224.   	if (T == NULL) goto err;
      225.   

crypto/bn/bn_ctx.c:288:1: Parameter `ctx->pool.used`
        286.   	}
        287.   
        288. > BIGNUM *BN_CTX_get(BN_CTX *ctx)
        289.   	{
        290.   	BIGNUM *ret;

crypto/bn/bn_gcd.c:239:8: Call
      237.   	if (B->neg || (BN_ucmp(B, A) >= 0))
      238.   		{
      239.   		if (!BN_nnmod(B, B, A, ctx)) goto err;
                    ^
      240.   		}
      241.   	sign = -1;

crypto/bn/bn_mod.c:127:1: Parameter `ctx->pool.used`
        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:179:1: Parameter `ctx->pool.used`
          177.    * If 'dv' or 'rm' is NULL, the respective value is not returned.
          178.    */
          179. > int BN_div(BIGNUM *dv, BIGNUM *rm, const BIGNUM *num, const BIGNUM *divisor,
          180.   	   BN_CTX *ctx)
          181.   	{

crypto/bn/bn_div.c:208:6: Call
          206.   
          207.   	BN_CTX_start(ctx);
          208.   	tmp=BN_CTX_get(ctx);
                      ^
          209.   	snum=BN_CTX_get(ctx);
          210.   	sdiv=BN_CTX_get(ctx);

crypto/bn/bn_ctx.c:288:1: Parameter `ctx->pool.used`
            286.   	}
            287.   
            288. > BIGNUM *BN_CTX_get(BN_CTX *ctx)
            289.   	{
            290.   	BIGNUM *ret;

crypto/bn/bn_div.c:209:7: Call
          207.   	BN_CTX_start(ctx);
          208.   	tmp=BN_CTX_get(ctx);
          209.   	snum=BN_CTX_get(ctx);
                       ^
          210.   	sdiv=BN_CTX_get(ctx);
          211.   	if (dv == NULL)

crypto/bn/bn_ctx.c:288:1: Parameter `ctx->pool.used`
            286.   	}
            287.   
            288. > BIGNUM *BN_CTX_get(BN_CTX *ctx)
            289.   	{
            290.   	BIGNUM *ret;

crypto/bn/bn_div.c:210:7: Call
          208.   	tmp=BN_CTX_get(ctx);
          209.   	snum=BN_CTX_get(ctx);
          210.   	sdiv=BN_CTX_get(ctx);
                       ^
          211.   	if (dv == NULL)
          212.   		res=BN_CTX_get(ctx);

crypto/bn/bn_ctx.c:288:1: Parameter `ctx->pool.used`
            286.   	}
            287.   
            288. > BIGNUM *BN_CTX_get(BN_CTX *ctx)
            289.   	{
            290.   	BIGNUM *ret;

crypto/bn/bn_div.c:392:2: Call
          390.   		bn_check_top(rm);
          391.   		}
          392.   	BN_CTX_end(ctx);
                  ^
          393.   	return(1);
          394.   err:

crypto/bn/bn_ctx.c:270:1: Parameter `ctx->pool.used`
            268.   	}
            269.   
            270. > void BN_CTX_end(BN_CTX *ctx)
            271.   	{
            272.   	CTXDBG_ENTRY("BN_CTX_end", ctx);

crypto/bn/bn_ctx.c:280:4: Call
            278.   		/* Does this stack frame have anything to release? */
            279.   		if(fp < ctx->used)
            280.   			BN_POOL_release(&ctx->pool, ctx->used - fp);
                      ^
            281.   		ctx->used = fp;
            282.   		/* Unjam "too_many" in case "get" had failed */

crypto/bn/bn_ctx.c:438:1: <LHS trace>
436.   	}
437.   
438. > static void BN_POOL_release(BN_POOL *p, unsigned int num)
439.   	{
440.   	unsigned int offset = (p->used - 1) % BN_CTX_POOL_SIZE;

crypto/bn/bn_ctx.c:438:1: Parameter `p->used`
              436.   	}
              437.   
              438. > static void BN_POOL_release(BN_POOL *p, unsigned int num)
              439.   	{
              440.   	unsigned int offset = (p->used - 1) % BN_CTX_POOL_SIZE;

crypto/bn/bn_ctx.c:440:2: Binary operation: ([0, +oo] - 1):unsigned32 by call to `BN_MONT_CTX_set_locked` 
              438.   static void BN_POOL_release(BN_POOL *p, unsigned int num)
              439.   	{
              440.   	unsigned int offset = (p->used - 1) % BN_CTX_POOL_SIZE;
                      ^
              441.   	p->used -= num;
              442.   	while(num--)
