crypto/bn/bn_gf2m.c:912: error: INTEGER_OVERFLOW_L2
  ([0, +oo] - 1):unsigned32 by call to `BN_GF2m_mod_sqr_arr`.
Showing all 13 steps of the trace


crypto/bn/bn_gf2m.c:856:1: Parameter `ctx->stack.depth`
854.    * Uses algorithms A.4.7 and A.4.6 from IEEE P1363.
855.    */
856. > int BN_GF2m_mod_solve_quad_arr(BIGNUM *r, const BIGNUM *a_, const int p[], BN_CTX *ctx)
857.   	{
858.   	int ret = 0, count = 0;

crypto/bn/bn_gf2m.c:871:2: Call
869.   		}
870.   
871.   	BN_CTX_start(ctx);
        ^
872.   	a = BN_CTX_get(ctx);
873.   	z = BN_CTX_get(ctx);

crypto/bn/bn_ctx.c:255:1: Parameter `ctx->stack.depth`
  253.   	}
  254.   
  255. > void BN_CTX_start(BN_CTX *ctx)
  256.   	{
  257.   	CTXDBG_ENTRY("BN_CTX_start", ctx);

crypto/bn/bn_gf2m.c:912:10: Call
910.   			for (j = 1; j <= p[0] - 1; j++)
911.   				{
912.   				if (!BN_GF2m_mod_sqr_arr(z, z, p, ctx)) goto err;
                ^
913.   				if (!BN_GF2m_mod_sqr_arr(w2, w, p, ctx)) goto err;
914.   				if (!BN_GF2m_mod_mul_arr(tmp, w2, a, p, ctx)) goto err;

crypto/bn/bn_gf2m.c:457:1: Parameter `ctx->stack.depth`
  455.   
  456.   /* Square a, reduce the result mod p, and store it in a.  r could be a. */
  457. > int	BN_GF2m_mod_sqr_arr(BIGNUM *r, const BIGNUM *a, const int p[], BN_CTX *ctx)
  458.   	{
  459.   	int i, ret = 0;

crypto/bn/bn_gf2m.c:463:2: Call
  461.   
  462.   	bn_check_top(a);
  463.   	BN_CTX_start(ctx);
          ^
  464.   	if ((s = BN_CTX_get(ctx)) == NULL) return 0;
  465.   	if (!bn_wexpand(s, 2 * a->top)) goto err;

crypto/bn/bn_ctx.c:255:1: Parameter `ctx->stack.depth`
    253.   	}
    254.   
    255. > void BN_CTX_start(BN_CTX *ctx)
    256.   	{
    257.   	CTXDBG_ENTRY("BN_CTX_start", ctx);

crypto/bn/bn_gf2m.c:479:2: Call
  477.   	ret = 1;
  478.   err:
  479.   	BN_CTX_end(ctx);
          ^
  480.   	return ret;
  481.   	}

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

crypto/bn/bn_ctx.c:277:21: Call
    275.   	else
    276.   		{
    277.   		unsigned int fp = BN_STACK_pop(&ctx->stack);
                               ^
    278.   		/* Does this stack frame have anything to release? */
    279.   		if(fp < ctx->used)

crypto/bn/bn_ctx.c:351:1: <LHS trace>
349.   	}
350.   
351. > static unsigned int BN_STACK_pop(BN_STACK *st)
352.   	{
353.   	return st->indexes[--(st->depth)];

crypto/bn/bn_ctx.c:351:1: Parameter `st->depth`
      349.   	}
      350.   
      351. > static unsigned int BN_STACK_pop(BN_STACK *st)
      352.   	{
      353.   	return st->indexes[--(st->depth)];

crypto/bn/bn_ctx.c:353:9: Binary operation: ([0, +oo] - 1):unsigned32 by call to `BN_GF2m_mod_sqr_arr` 
      351.   static unsigned int BN_STACK_pop(BN_STACK *st)
      352.   	{
      353.   	return st->indexes[--(st->depth)];
                     ^
      354.   	}
      355.   

static unsigned int BN_STACK_pop(BN_STACK *st)
	{
	return st->indexes[--(st->depth)];
	}
['int BN_GF2m_mod_solve_quad_arr(BIGNUM *r, const BIGNUM *a_, const int p[], BN_CTX *ctx)\n\t{\n\tint ret = 0, count = 0;\n\tunsigned int j;\n\tBIGNUM *a, *z, *rho, *w, *w2, *tmp;\n\tbn_check_top(a_);\n\tif (!p[0])\n\t\t{\n\t\tBN_zero(r);\n\t\treturn 1;\n\t\t}\n\tBN_CTX_start(ctx);\n\ta = BN_CTX_get(ctx);\n\tz = BN_CTX_get(ctx);\n\tw = BN_CTX_get(ctx);\n\tif (w == NULL) goto err;\n\tif (!BN_GF2m_mod_arr(a, a_, p)) goto err;\n\tif (BN_is_zero(a))\n\t\t{\n\t\tBN_zero(r);\n\t\tret = 1;\n\t\tgoto err;\n\t\t}\n\tif (p[0] & 0x1)\n\t\t{\n\t\tif (!BN_copy(z, a)) goto err;\n\t\tfor (j = 1; j <= (p[0] - 1) / 2; j++)\n\t\t\t{\n\t\t\tif (!BN_GF2m_mod_sqr_arr(z, z, p, ctx)) goto err;\n\t\t\tif (!BN_GF2m_mod_sqr_arr(z, z, p, ctx)) goto err;\n\t\t\tif (!BN_GF2m_add(z, z, a)) goto err;\n\t\t\t}\n\t\t}\n\telse\n\t\t{\n\t\trho = BN_CTX_get(ctx);\n\t\tw2 = BN_CTX_get(ctx);\n\t\ttmp = BN_CTX_get(ctx);\n\t\tif (tmp == NULL) goto err;\n\t\tdo\n\t\t\t{\n\t\t\tif (!BN_rand(rho, p[0], 0, 0)) goto err;\n\t\t\tif (!BN_GF2m_mod_arr(rho, rho, p)) goto err;\n\t\t\tBN_zero(z);\n\t\t\tif (!BN_copy(w, rho)) goto err;\n\t\t\tfor (j = 1; j <= p[0] - 1; j++)\n\t\t\t\t{\n\t\t\t\tif (!BN_GF2m_mod_sqr_arr(z, z, p, ctx)) goto err;\n\t\t\t\tif (!BN_GF2m_mod_sqr_arr(w2, w, p, ctx)) goto err;\n\t\t\t\tif (!BN_GF2m_mod_mul_arr(tmp, w2, a, p, ctx)) goto err;\n\t\t\t\tif (!BN_GF2m_add(z, z, tmp)) goto err;\n\t\t\t\tif (!BN_GF2m_add(w, w2, rho)) goto err;\n\t\t\t\t}\n\t\t\tcount++;\n\t\t\t} while (BN_is_zero(w) && (count < MAX_ITERATIONS));\n\t\tif (BN_is_zero(w))\n\t\t\t{\n\t\t\tBNerr(BN_F_BN_GF2M_MOD_SOLVE_QUAD_ARR,BN_R_TOO_MANY_ITERATIONS);\n\t\t\tgoto err;\n\t\t\t}\n\t\t}\n\tif (!BN_GF2m_mod_sqr_arr(w, z, p, ctx)) goto err;\n\tif (!BN_GF2m_add(w, z, w)) goto err;\n\tif (BN_GF2m_cmp(w, a))\n\t\t{\n\t\tBNerr(BN_F_BN_GF2M_MOD_SOLVE_QUAD_ARR, BN_R_NO_SOLUTION);\n\t\tgoto err;\n\t\t}\n\tif (!BN_copy(r, z)) goto err;\n\tbn_check_top(r);\n\tret = 1;\nerr:\n\tBN_CTX_end(ctx);\n\treturn ret;\n\t}', 'void BN_CTX_start(BN_CTX *ctx)\n\t{\n\tCTXDBG_ENTRY("BN_CTX_start", ctx);\n\tif(ctx->err_stack || ctx->too_many)\n\t\tctx->err_stack++;\n\telse if(!BN_STACK_push(&ctx->stack, ctx->used))\n\t\t{\n\t\tBNerr(BN_F_BN_CTX_START,BN_R_TOO_MANY_TEMPORARY_VARIABLES);\n\t\tctx->err_stack++;\n\t\t}\n\tCTXDBG_EXIT(ctx);\n\t}', 'int\tBN_GF2m_mod_sqr_arr(BIGNUM *r, const BIGNUM *a, const int p[], BN_CTX *ctx)\n\t{\n\tint i, ret = 0;\n\tBIGNUM *s;\n\tbn_check_top(a);\n\tBN_CTX_start(ctx);\n\tif ((s = BN_CTX_get(ctx)) == NULL) return 0;\n\tif (!bn_wexpand(s, 2 * a->top)) goto err;\n\tfor (i = a->top - 1; i >= 0; i--)\n\t\t{\n\t\ts->d[2*i+1] = SQR1(a->d[i]);\n\t\ts->d[2*i  ] = SQR0(a->d[i]);\n\t\t}\n\ts->top = 2 * a->top;\n\tbn_correct_top(s);\n\tif (!BN_GF2m_mod_arr(r, s, p)) goto err;\n\tbn_check_top(r);\n\tret = 1;\nerr:\n\tBN_CTX_end(ctx);\n\treturn ret;\n\t}', 'void BN_CTX_end(BN_CTX *ctx)\n\t{\n\tCTXDBG_ENTRY("BN_CTX_end", ctx);\n\tif(ctx->err_stack)\n\t\tctx->err_stack--;\n\telse\n\t\t{\n\t\tunsigned int fp = BN_STACK_pop(&ctx->stack);\n\t\tif(fp < ctx->used)\n\t\t\tBN_POOL_release(&ctx->pool, ctx->used - fp);\n\t\tctx->used = fp;\n\t\tctx->too_many = 0;\n\t\t}\n\tCTXDBG_EXIT(ctx);\n\t}', 'static unsigned int BN_STACK_pop(BN_STACK *st)\n\t{\n\treturn st->indexes[--(st->depth)];\n\t}']