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


crypto/bn/bntest.c:1968:1: Parameter `ctx->stack.depth`
1966.   	}
1967.   #endif
1968. > int test_lshift(BIO *bp,BN_CTX *ctx,BIGNUM *a_)
1969.   	{
1970.   	BIGNUM *a,*b,*c,*d;

crypto/bn/bntest.c:2002:3: Call
2000.   			BIO_puts(bp,"\n");
2001.   			}
2002.   		BN_mul(d,a,c,ctx);
          ^
2003.   		BN_sub(d,d,b);
2004.   		if(!BN_is_zero(d))

crypto/bn/bn_mul.c:898:1: Parameter `ctx->stack.depth`
  896.   #endif /* BN_RECURSION */
  897.   
  898. > int BN_mul(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx)
  899.   	{
  900.   	int ret=0;

crypto/bn/bn_mul.c:925:2: Call
  923.   	top=al+bl;
  924.   
  925.   	BN_CTX_start(ctx);
          ^
  926.   	if ((r == a) || (r == b))
  927.   		{

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

crypto/bn/bn_mul.c:1051:2: Call
  1049.   err:
  1050.   	bn_check_top(r);
  1051.   	BN_CTX_end(ctx);
           ^
  1052.   	return(ret);
  1053.   	}

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

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

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

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

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

static unsigned int BN_STACK_pop(BN_STACK *st)
	{
	return st->indexes[--(st->depth)];
	}
['int test_lshift(BIO *bp,BN_CTX *ctx,BIGNUM *a_)\n\t{\n\tBIGNUM *a,*b,*c,*d;\n\tint i;\n\tb=BN_new();\n\tc=BN_new();\n\td=BN_new();\n\tBN_one(c);\n\tif(a_)\n\t    a=a_;\n\telse\n\t    {\n\t    a=BN_new();\n\t    BN_bntest_rand(a,200,0,0);\n\t    a->neg=rand_neg();\n\t    }\n\tfor (i=0; i<num0; i++)\n\t\t{\n\t\tBN_lshift(b,a,i+1);\n\t\tBN_add(c,c,c);\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,c);\n\t\t\t\tBIO_puts(bp," - ");\n\t\t\t\t}\n\t\t\tBN_print(bp,b);\n\t\t\tBIO_puts(bp,"\\n");\n\t\t\t}\n\t\tBN_mul(d,a,c,ctx);\n\t\tBN_sub(d,d,b);\n\t\tif(!BN_is_zero(d))\n\t\t    {\n\t\t    fprintf(stderr,"Left shift test failed!\\n");\n\t\t    fprintf(stderr,"a=");\n\t\t    BN_print_fp(stderr,a);\n\t\t    fprintf(stderr,"\\nb=");\n\t\t    BN_print_fp(stderr,b);\n\t\t    fprintf(stderr,"\\nc=");\n\t\t    BN_print_fp(stderr,c);\n\t\t    fprintf(stderr,"\\nd=");\n\t\t    BN_print_fp(stderr,d);\n\t\t    fprintf(stderr,"\\n");\n\t\t    return 0;\n\t\t    }\n\t\t}\n\tBN_free(a);\n\tBN_free(b);\n\tBN_free(c);\n\tBN_free(d);\n\treturn(1);\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\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\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\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 (t == NULL)\n\t\t\t\tgoto err;\n\t\t\tif (al > j || bl > j)\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,\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\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,\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}', '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}', '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}']