crypto/bn/bn_gcd.c:166: error: INTEGER_OVERFLOW_L2
  ([0, +oo] - 1):unsigned64 by call to `BN_cmp`.
Showing all 8 steps of the trace


crypto/bn/bn_gcd.c:164:10: Call
162.   			if (BN_is_odd(b))
163.   				{
164.   				if (!BN_sub(a,a,b)) goto err;
                ^
165.   				if (!BN_rshift1(a,a)) goto err;
166.   				if (BN_cmp(a,b) < 0)

crypto/bn/bn_add.c:263:1: Parameter `a->top`
  261.   	}
  262.   
  263. > int BN_sub(BIGNUM *r, const BIGNUM *a, const BIGNUM *b)
  264.   	{
  265.   	size_t max;

crypto/bn/bn_gcd.c:165:10: Call
163.   				{
164.   				if (!BN_sub(a,a,b)) goto err;
165.   				if (!BN_rshift1(a,a)) goto err;
                ^
166.   				if (BN_cmp(a,b) < 0)
167.   					{ t=a; a=b; b=t; }

crypto/bn/bn_shift.c:99:1: Parameter `r->dmax`
  97.   	}
  98.   
  99. > int BN_rshift1(BIGNUM *r, const BIGNUM *a)
  100.   	{
  101.   	BN_ULONG *ap,*rp,t,c;

crypto/bn/bn_gcd.c:166:9: Call
164.   				if (!BN_sub(a,a,b)) goto err;
165.   				if (!BN_rshift1(a,a)) goto err;
166.   				if (BN_cmp(a,b) < 0)
               ^
167.   					{ t=a; a=b; b=t; }
168.   				}

crypto/bn/bn_lib.c:678:1: <LHS trace>
676.   	}
677.   
678. > int BN_cmp(const BIGNUM *a, const BIGNUM *b)
679.   	{
680.   	int i;

crypto/bn/bn_lib.c:678:1: Parameter `a->top`
  676.   	}
  677.   
  678. > int BN_cmp(const BIGNUM *a, const BIGNUM *b)
  679.   	{
  680.   	int i;

crypto/bn/bn_lib.c:709:7: Binary operation: ([0, +oo] - 1):unsigned64 by call to `BN_cmp` 
  707.   	if (a->top > b->top) return(gt);
  708.   	if (a->top < b->top) return(lt);
  709.   	for (i=a->top-1; i>=0; i--)
               ^
  710.   		{
  711.   		t1=a->d[i];

int BN_cmp(const BIGNUM *a, const BIGNUM *b)
	{
	int i;
	int gt,lt;
	BN_ULONG t1,t2;
	if ((a == NULL) || (b == NULL))
		{
		if (a != NULL)
			return(-1);
		else if (b != NULL)
			return(1);
		else
			return(0);
		}
	bn_check_top(a);
	bn_check_top(b);
	if (a->neg != b->neg)
		{
		if (a->neg)
			return(-1);
		else	return(1);
		}
	if (a->neg == 0)
		{ gt=1; lt= -1; }
	else	{ gt= -1; lt=1; }
	if (a->top > b->top) return(gt);
	if (a->top < b->top) return(lt);
	for (i=a->top-1; i>=0; i--)
		{
		t1=a->d[i];
		t2=b->d[i];
		if (t1 > t2) return(gt);
		if (t1 < t2) return(lt);
		}
	return(0);
	}
['static BIGNUM *euclid(BIGNUM *a, BIGNUM *b)\n\t{\n\tBIGNUM *t;\n\tint shifts=0;\n\tbn_check_top(a);\n\tbn_check_top(b);\n\twhile (!BN_is_zero(b))\n\t\t{\n\t\tif (BN_is_odd(a))\n\t\t\t{\n\t\t\tif (BN_is_odd(b))\n\t\t\t\t{\n\t\t\t\tif (!BN_sub(a,a,b)) goto err;\n\t\t\t\tif (!BN_rshift1(a,a)) goto err;\n\t\t\t\tif (BN_cmp(a,b) < 0)\n\t\t\t\t\t{ t=a; a=b; b=t; }\n\t\t\t\t}\n\t\t\telse\n\t\t\t\t{\n\t\t\t\tif (!BN_rshift1(b,b)) goto err;\n\t\t\t\tif (BN_cmp(a,b) < 0)\n\t\t\t\t\t{ t=a; a=b; b=t; }\n\t\t\t\t}\n\t\t\t}\n\t\telse\n\t\t\t{\n\t\t\tif (BN_is_odd(b))\n\t\t\t\t{\n\t\t\t\tif (!BN_rshift1(a,a)) goto err;\n\t\t\t\tif (BN_cmp(a,b) < 0)\n\t\t\t\t\t{ t=a; a=b; b=t; }\n\t\t\t\t}\n\t\t\telse\n\t\t\t\t{\n\t\t\t\tif (!BN_rshift1(a,a)) goto err;\n\t\t\t\tif (!BN_rshift1(b,b)) goto err;\n\t\t\t\tshifts++;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\tif (shifts)\n\t\t{\n\t\tif (!BN_lshift(a,a,shifts)) goto err;\n\t\t}\n\tbn_check_top(a);\n\treturn(a);\nerr:\n\treturn(NULL);\n\t}', 'int BN_sub(BIGNUM *r, const BIGNUM *a, const BIGNUM *b)\n\t{\n\tsize_t max;\n\tint add=0,neg=0;\n\tconst BIGNUM *tmp;\n\tbn_check_top(a);\n\tbn_check_top(b);\n\tif (a->neg)\n\t\t{\n\t\tif (b->neg)\n\t\t\t{ tmp=a; a=b; b=tmp; }\n\t\telse\n\t\t\t{ add=1; neg=1; }\n\t\t}\n\telse\n\t\t{\n\t\tif (b->neg) { add=1; neg=0; }\n\t\t}\n\tif (add)\n\t\t{\n\t\tif (!BN_uadd(r,a,b)) return(0);\n\t\tr->neg=neg;\n\t\treturn(1);\n\t\t}\n\tmax=(a->top > b->top)?a->top:b->top;\n\tif (bn_wexpand(r,max) == NULL) return(0);\n\tif (BN_ucmp(a,b) < 0)\n\t\t{\n\t\tif (!BN_usub(r,b,a)) return(0);\n\t\tr->neg=1;\n\t\t}\n\telse\n\t\t{\n\t\tif (!BN_usub(r,a,b)) return(0);\n\t\tr->neg=0;\n\t\t}\n\tbn_check_top(r);\n\treturn(1);\n\t}', 'int BN_rshift1(BIGNUM *r, const BIGNUM *a)\n\t{\n\tBN_ULONG *ap,*rp,t,c;\n\tint i;\n\tbn_check_top(r);\n\tbn_check_top(a);\n\tif (BN_is_zero(a))\n\t\t{\n\t\tBN_zero(r);\n\t\treturn(1);\n\t\t}\n\tif (a != r)\n\t\t{\n\t\tif (bn_wexpand(r,a->top) == NULL) return(0);\n\t\tr->top=a->top;\n\t\tr->neg=a->neg;\n\t\t}\n\tap=a->d;\n\trp=r->d;\n\tc=0;\n\tfor (i=a->top-1; i>=0; i--)\n\t\t{\n\t\tt=ap[i];\n\t\trp[i]=((t>>1)&BN_MASK2)|c;\n\t\tc=(t&1)?BN_TBIT:0;\n\t\t}\n\tbn_correct_top(r);\n\tbn_check_top(r);\n\treturn(1);\n\t}', 'int BN_cmp(const BIGNUM *a, const BIGNUM *b)\n\t{\n\tint i;\n\tint gt,lt;\n\tBN_ULONG t1,t2;\n\tif ((a == NULL) || (b == NULL))\n\t\t{\n\t\tif (a != NULL)\n\t\t\treturn(-1);\n\t\telse if (b != NULL)\n\t\t\treturn(1);\n\t\telse\n\t\t\treturn(0);\n\t\t}\n\tbn_check_top(a);\n\tbn_check_top(b);\n\tif (a->neg != b->neg)\n\t\t{\n\t\tif (a->neg)\n\t\t\treturn(-1);\n\t\telse\treturn(1);\n\t\t}\n\tif (a->neg == 0)\n\t\t{ gt=1; lt= -1; }\n\telse\t{ gt= -1; lt=1; }\n\tif (a->top > b->top) return(gt);\n\tif (a->top < b->top) return(lt);\n\tfor (i=a->top-1; i>=0; i--)\n\t\t{\n\t\tt1=a->d[i];\n\t\tt2=b->d[i];\n\t\tif (t1 > t2) return(gt);\n\t\tif (t1 < t2) return(lt);\n\t\t}\n\treturn(0);\n\t}']