crypto/bn/bntest.c:914: error: INTEGER_OVERFLOW_L2
  ([0, +oo] - 1):unsigned32 by call to `BN_mul`.
Showing all 16 steps of the trace


crypto/bn/bntest.c:897:8: Call
895.   		BN_bntest_rand(b,2+i,0,0); /**/
896.   
897.   		if (!BN_exp(d,a,b,ctx))
              ^
898.   			return(00);
899.   

crypto/bn/bn_exp.c:119:1: Parameter `ctx->stack.depth`
  117.   
  118.   /* this one works - simple but works */
  119. > int BN_exp(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx)
  120.   	{
  121.   	int i,bits,ret=0;

crypto/bn/bn_exp.c:124:2: Call
  122.   	BIGNUM *v,*rr;
  123.   
  124.   	BN_CTX_start(ctx);
          ^
  125.   	if ((r == a) || (r == p))
  126.   		rr = BN_CTX_get(ctx);

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

crypto/bn/bn_exp.c:149:2: Call
  147.   err:
  148.   	if (r != rr) BN_copy(r,rr);
  149.   	BN_CTX_end(ctx);
          ^
  150.   	bn_check_top(r);
  151.   	return(ret);

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/bntest.c:914:7: Call
912.   		BN_one(e);
913.   		for( ; !BN_is_zero(b) ; BN_sub(b,b,one))
914.   		    BN_mul(e,e,a,ctx);
             ^
915.   		BN_sub(e,e,d);
916.   		if(!BN_is_zero(e))

crypto/bn/bn_mul.c:941:1: Parameter `ctx->stack.depth`
  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/bn/bn_mul.c:972:2: Call
  970.   	top=al+bl;
  971.   
  972.   	BN_CTX_start(ctx);
          ^
  973.   	if ((r == a) || (r == b))
  974.   		{

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

crypto/bn/bn_mul.c:1098:2: Call
  1096.   err:
  1097.   	bn_check_top(r);
  1098.   	BN_CTX_end(ctx);
           ^
  1099.   	return(ret);
  1100.   	}

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_mul` 
      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 test_exp(BIO *bp, BN_CTX *ctx)\n\t{\n\tBIGNUM *a,*b,*d,*e,*one;\n\tint i;\n\ta=BN_new();\n\tb=BN_new();\n\td=BN_new();\n\te=BN_new();\n\tone=BN_new();\n\tBN_one(one);\n\tfor (i=0; i<num2; i++)\n\t\t{\n\t\tBN_bntest_rand(a,20+i*5,0,0);\n\t\tBN_bntest_rand(b,2+i,0,0);\n\t\tif (!BN_exp(d,a,b,ctx))\n\t\t\treturn(00);\n\t\tif (bp != NULL)\n\t\t\t{\n\t\t\tif (!results)\n\t\t\t\t{\n\t\t\t\tBN_print(bp,a);\n\t\t\t\tBIO_puts(bp," ^ ");\n\t\t\t\tBN_print(bp,b);\n\t\t\t\tBIO_puts(bp," - ");\n\t\t\t\t}\n\t\t\tBN_print(bp,d);\n\t\t\tBIO_puts(bp,"\\n");\n\t\t\t}\n\t\tBN_one(e);\n\t\tfor( ; !BN_is_zero(b) ; BN_sub(b,b,one))\n\t\t    BN_mul(e,e,a,ctx);\n\t\tBN_sub(e,e,d);\n\t\tif(!BN_is_zero(e))\n\t\t    {\n\t\t    fprintf(stderr,"Exponentiation test failed!\\n");\n\t\t    return 0;\n\t\t    }\n\t\t}\n\tBN_free(a);\n\tBN_free(b);\n\tBN_free(d);\n\tBN_free(e);\n\tBN_free(one);\n\treturn(1);\n\t}', 'int BN_exp(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx)\n\t{\n\tint i,bits,ret=0;\n\tBIGNUM *v,*rr;\n\tBN_CTX_start(ctx);\n\tif ((r == a) || (r == p))\n\t\trr = BN_CTX_get(ctx);\n\telse\n\t\trr = r;\n\tif ((v = BN_CTX_get(ctx)) == NULL) goto err;\n\tif (BN_copy(v,a) == NULL) goto err;\n\tbits=BN_num_bits(p);\n\tif (BN_is_odd(p))\n\t\t{ if (BN_copy(rr,a) == NULL) goto err; }\n\telse\t{ if (!BN_one(rr)) goto err; }\n\tfor (i=1; i<bits; i++)\n\t\t{\n\t\tif (!BN_sqr(v,v,ctx)) goto err;\n\t\tif (BN_is_bit_set(p,i))\n\t\t\t{\n\t\t\tif (!BN_mul(rr,rr,v,ctx)) goto err;\n\t\t\t}\n\t\t}\n\tret=1;\nerr:\n\tif (r != rr) BN_copy(r,rr);\n\tBN_CTX_end(ctx);\n\tbn_check_top(r);\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_GET,BN_R_TOO_MANY_TEMPORARY_VARIABLES);\n\t\tctx->err_stack++;\n\t\t}\n\tCTXDBG_EXIT(ctx);\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}', 'int BN_mul(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx)\n\t{\n\tint ret=0;\n\tint top,al,bl;\n\tBIGNUM *rr;\n#if defined(BN_MUL_COMBA) || defined(BN_RECURSION)\n\tint i;\n#endif\n#ifdef BN_RECURSION\n\tBIGNUM *t=NULL;\n\tint j=0,k;\n#endif\n#ifdef BN_COUNT\n\tfprintf(stderr,"BN_mul %d * %d\\n",a->top,b->top);\n#endif\n\tbn_check_top(a);\n\tbn_check_top(b);\n\tbn_check_top(r);\n\tal=a->top;\n\tbl=b->top;\n\tif ((al == 0) || (bl == 0))\n\t\t{\n\t\tBN_zero(r);\n\t\treturn(1);\n\t\t}\n\ttop=al+bl;\n\tBN_CTX_start(ctx);\n\tif ((r == a) || (r == b))\n\t\t{\n\t\tif ((rr = BN_CTX_get(ctx)) == NULL) goto err;\n\t\t}\n\telse\n\t\trr = r;\n\trr->neg=a->neg^b->neg;\n#if defined(BN_MUL_COMBA) || defined(BN_RECURSION)\n\ti = al-bl;\n#endif\n#ifdef BN_MUL_COMBA\n\tif (i == 0)\n\t\t{\n# if 0\n\t\tif (al == 4)\n\t\t\t{\n\t\t\tif (bn_wexpand(rr,8) == NULL) goto err;\n\t\t\trr->top=8;\n\t\t\tbn_mul_comba4(rr->d,a->d,b->d);\n\t\t\tgoto end;\n\t\t\t}\n# endif\n\t\tif (al == 8)\n\t\t\t{\n\t\t\tif (bn_wexpand(rr,16) == NULL) goto err;\n\t\t\trr->top=16;\n\t\t\tbn_mul_comba8(rr->d,a->d,b->d);\n\t\t\tgoto end;\n\t\t\t}\n\t\t}\n#endif\n#ifdef BN_RECURSION\n\tif ((al >= BN_MULL_SIZE_NORMAL) && (bl >= BN_MULL_SIZE_NORMAL))\n\t\t{\n\t\tif (i >= -1 && i <= 1)\n\t\t\t{\n\t\t\tint sav_j =0;\n\t\t\tif (i >= 0)\n\t\t\t\t{\n\t\t\t\tj = BN_num_bits_word((BN_ULONG)al);\n\t\t\t\t}\n\t\t\tif (i == -1)\n\t\t\t\t{\n\t\t\t\tj = BN_num_bits_word((BN_ULONG)bl);\n\t\t\t\t}\n\t\t\tsav_j = j;\n\t\t\tj = 1<<(j-1);\n\t\t\tassert(j <= al || j <= bl);\n\t\t\tk = j+j;\n\t\t\tt = BN_CTX_get(ctx);\n\t\t\tif (al > j || bl > j)\n\t\t\t\t{\n\t\t\t\tbn_wexpand(t,k*4);\n\t\t\t\tbn_wexpand(rr,k*4);\n\t\t\t\tbn_mul_part_recursive(rr->d,a->d,b->d,\n\t\t\t\t\tj,al-j,bl-j,t->d);\n\t\t\t\t}\n\t\t\telse\n\t\t\t\t{\n\t\t\t\tbn_wexpand(t,k*2);\n\t\t\t\tbn_wexpand(rr,k*2);\n\t\t\t\tbn_mul_recursive(rr->d,a->d,b->d,\n\t\t\t\t\tj,al-j,bl-j,t->d);\n\t\t\t\t}\n\t\t\trr->top=top;\n\t\t\tgoto end;\n\t\t\t}\n#if 0\n\t\tif (i == 1 && !BN_get_flags(b,BN_FLG_STATIC_DATA))\n\t\t\t{\n\t\t\tBIGNUM *tmp_bn = (BIGNUM *)b;\n\t\t\tif (bn_wexpand(tmp_bn,al) == NULL) goto err;\n\t\t\ttmp_bn->d[bl]=0;\n\t\t\tbl++;\n\t\t\ti--;\n\t\t\t}\n\t\telse if (i == -1 && !BN_get_flags(a,BN_FLG_STATIC_DATA))\n\t\t\t{\n\t\t\tBIGNUM *tmp_bn = (BIGNUM *)a;\n\t\t\tif (bn_wexpand(tmp_bn,bl) == NULL) goto err;\n\t\t\ttmp_bn->d[al]=0;\n\t\t\tal++;\n\t\t\ti++;\n\t\t\t}\n\t\tif (i == 0)\n\t\t\t{\n\t\t\tj=BN_num_bits_word((BN_ULONG)al);\n\t\t\tj=1<<(j-1);\n\t\t\tk=j+j;\n\t\t\tt = BN_CTX_get(ctx);\n\t\t\tif (al == j)\n\t\t\t\t{\n\t\t\t\tif (bn_wexpand(t,k*2) == NULL) goto err;\n\t\t\t\tif (bn_wexpand(rr,k*2) == NULL) goto err;\n\t\t\t\tbn_mul_recursive(rr->d,a->d,b->d,al,t->d);\n\t\t\t\t}\n\t\t\telse\n\t\t\t\t{\n\t\t\t\tif (bn_wexpand(t,k*4) == NULL) goto err;\n\t\t\t\tif (bn_wexpand(rr,k*4) == NULL) goto err;\n\t\t\t\tbn_mul_part_recursive(rr->d,a->d,b->d,al-j,j,t->d);\n\t\t\t\t}\n\t\t\trr->top=top;\n\t\t\tgoto end;\n\t\t\t}\n#endif\n\t\t}\n#endif\n\tif (bn_wexpand(rr,top) == NULL) goto err;\n\trr->top=top;\n\tbn_mul_normal(rr->d,a->d,al,b->d,bl);\n#if defined(BN_MUL_COMBA) || defined(BN_RECURSION)\nend:\n#endif\n\tbn_correct_top(rr);\n\tif (r != rr) BN_copy(r,rr);\n\tret=1;\nerr:\n\tbn_check_top(r);\n\tBN_CTX_end(ctx);\n\treturn(ret);\n\t}', 'static unsigned int BN_STACK_pop(BN_STACK *st)\n\t{\n\treturn st->indexes[--(st->depth)];\n\t}']