crypto/rsa/rsa_lib.c:356: error: INTEGER_OVERFLOW_L2
  ([0, +oo] - 1):unsigned32 by call to `BN_mod_inverse`.
Showing all 34 steps of the trace


crypto/rsa/rsa_lib.c:354:7: Call
352.   	if (!BN_sub(r1, p, BN_value_one())) goto err;
353.   	if (!BN_sub(r2, q, BN_value_one())) goto err;
354.   	if (!BN_mul(r0, r1, r2, ctx)) goto err;
             ^
355.   
356.   	ret = BN_mod_inverse(NULL, d, r0, ctx);

crypto/bn/bn_mul.c:941:1: Parameter `ctx->pool.used`
  939.   #endif /* BN_RECURSION */
  940.   
  941. > int BN_mul(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx)
  942.   	{
  943.   	int ret=0;

crypto/rsa/rsa_lib.c:356:8: Call
354.   	if (!BN_mul(r0, r1, r2, ctx)) goto err;
355.   
356.   	ret = BN_mod_inverse(NULL, d, r0, ctx);
              ^
357.   err:
358.   	BN_CTX_end(ctx);

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:210:6: Call
      208.   
      209.   	BN_CTX_start(ctx);
      210.   	tmp=BN_CTX_get(ctx);
                  ^
      211.   	snum=BN_CTX_get(ctx);
      212.   	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:211:7: Call
      209.   	BN_CTX_start(ctx);
      210.   	tmp=BN_CTX_get(ctx);
      211.   	snum=BN_CTX_get(ctx);
                   ^
      212.   	sdiv=BN_CTX_get(ctx);
      213.   	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:212:7: Call
      210.   	tmp=BN_CTX_get(ctx);
      211.   	snum=BN_CTX_get(ctx);
      212.   	sdiv=BN_CTX_get(ctx);
                   ^
      213.   	if (dv == NULL)
      214.   		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:394:2: Call
      392.   		bn_check_top(rm);
      393.   		}
      394.   	BN_CTX_end(ctx);
              ^
      395.   	return(1);
      396.   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_mod_inverse` 
          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--)
