crypto/ec/ecp_smpl.c:324: error: INTEGER_OVERFLOW_L2
  ([0, +oo] - 1):unsigned32 by call to `BN_mod_sqr`.
Showing all 23 steps of the trace


crypto/ec/ecp_smpl.c:280:1: Parameter `ctx->pool.used`
278.   
279.   
280. > int ec_GFp_simple_group_check_discriminant(const EC_GROUP *group, BN_CTX *ctx)
281.   	{
282.   	int ret = 0;

crypto/ec/ecp_smpl.c:297:6: Call
295.   		}
296.   	BN_CTX_start(ctx);
297.   	a = BN_CTX_get(ctx);
            ^
298.   	b = BN_CTX_get(ctx);
299.   	tmp_1 = 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/ec/ecp_smpl.c:298:6: Call
296.   	BN_CTX_start(ctx);
297.   	a = BN_CTX_get(ctx);
298.   	b = BN_CTX_get(ctx);
            ^
299.   	tmp_1 = BN_CTX_get(ctx);
300.   	tmp_2 = 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/ec/ecp_smpl.c:299:10: Call
297.   	a = BN_CTX_get(ctx);
298.   	b = BN_CTX_get(ctx);
299.   	tmp_1 = BN_CTX_get(ctx);
                ^
300.   	tmp_2 = BN_CTX_get(ctx);
301.   	order = 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/ec/ecp_smpl.c:300:10: Call
298.   	b = BN_CTX_get(ctx);
299.   	tmp_1 = BN_CTX_get(ctx);
300.   	tmp_2 = BN_CTX_get(ctx);
                ^
301.   	order = BN_CTX_get(ctx);
302.   	if (order == 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/ec/ecp_smpl.c:301:10: Call
299.   	tmp_1 = BN_CTX_get(ctx);
300.   	tmp_2 = BN_CTX_get(ctx);
301.   	order = BN_CTX_get(ctx);
                ^
302.   	if (order == NULL) goto err;
303.   

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/ec/ecp_smpl.c:324:8: Call
322.   	else if (!BN_is_zero(b))
323.   		{
324.   		if (!BN_mod_sqr(tmp_1, a, p, ctx)) goto err;
              ^
325.   		if (!BN_mod_mul(tmp_2, tmp_1, a, p, ctx)) goto err;
326.   		if (!BN_lshift(tmp_1, tmp_2, 2)) goto err;

crypto/bn/bn_mod.c:203:1: Parameter `ctx->pool.used`
  201.   
  202.   
  203. > int BN_mod_sqr(BIGNUM *r, const BIGNUM *a, const BIGNUM *m, BN_CTX *ctx)
  204.   	{
  205.   	if (!BN_sqr(r, a, ctx)) return 0;

crypto/bn/bn_mod.c:205:7: Call
  203.   int BN_mod_sqr(BIGNUM *r, const BIGNUM *a, const BIGNUM *m, BN_CTX *ctx)
  204.   	{
  205.   	if (!BN_sqr(r, a, ctx)) return 0;
               ^
  206.   	/* r->neg == 0,  thus we don't need BN_nnmod */
  207.   	return BN_mod(r, r, m, ctx);

crypto/bn/bn_sqr.c:65:1: Parameter `ctx->pool.used`
    63.   /* r must not be a */
    64.   /* I've just gone over this and it is now %20 faster on x86 - eay - 27 Jun 96 */
    65. > int BN_sqr(BIGNUM *r, const BIGNUM *a, BN_CTX *ctx)
    66.   	{
    67.   	int max,al;

crypto/bn/bn_sqr.c:85:6: Call
    83.   	BN_CTX_start(ctx);
    84.   	rr=(a != r) ? r : BN_CTX_get(ctx);
    85.   	tmp=BN_CTX_get(ctx);
               ^
    86.   	if (!rr || !tmp) goto err;
    87.   

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_sqr.c:153:2: Call
    151.   	bn_check_top(rr);
    152.   	bn_check_top(tmp);
    153.   	BN_CTX_end(ctx);
            ^
    154.   	return(ret);
    155.   	}

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_sqr` 
        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--)
