crypto/bn/bn_sqr.c:186: error: INTEGER_OVERFLOW_L2
  ([0, 4294967295] + [0, 2]):unsigned32 by call to `bn_add_words`.
Showing all 8 steps of the trace


crypto/bn/bn_sqr.c:167:8: Assignment
165.   	ap=a;
166.   	rp=r;
167.   	rp[0]=rp[max-1]=0;
              ^
168.   	rp++;
169.   	j=n;

crypto/bn/bn_sqr.c:186:2: Call
184.   		}
185.   
186.   	bn_add_words(r,r,r,max);
        ^
187.   
188.   	/* There will not be a carry */

crypto/bn/bn_asm.c:341:1: <LHS trace>
339.   	}
340.   #else /* !BN_LLONG */
341. > BN_ULONG bn_add_words(BN_ULONG *r, const BN_ULONG *a, const BN_ULONG *b, int n)
342.           {
343.   	BN_ULONG c,l,t;

crypto/bn/bn_asm.c:341:1: Parameter `*a`
  339.   	}
  340.   #else /* !BN_LLONG */
  341. > BN_ULONG bn_add_words(BN_ULONG *r, const BN_ULONG *a, const BN_ULONG *b, int n)
  342.           {
  343.   	BN_ULONG c,l,t;

crypto/bn/bn_asm.c:381:3: Assignment
  379.   	while(n)
  380.   		{
  381.   		t=a[0];
           ^
  382.   		t=(t+c)&BN_MASK2;
  383.   		c=(t < c);

crypto/bn/bn_asm.c:348:2: <RHS trace>
346.   	if (n <= 0) return((BN_ULONG)0);
347.   
348.   	c=0;
        ^
349.   #ifndef OPENSSL_SMALL_FOOTPRINT
350.   	while (n&~3)

crypto/bn/bn_asm.c:348:2: Assignment
  346.   	if (n <= 0) return((BN_ULONG)0);
  347.   
  348.   	c=0;
          ^
  349.   #ifndef OPENSSL_SMALL_FOOTPRINT
  350.   	while (n&~3)

crypto/bn/bn_asm.c:382:3: Binary operation: ([0, 4294967295] + [0, 2]):unsigned32 by call to `bn_add_words` 
  380.   		{
  381.   		t=a[0];
  382.   		t=(t+c)&BN_MASK2;
           ^
  383.   		c=(t < c);
  384.   		l=(t+b[0])&BN_MASK2;

BN_ULONG bn_add_words(BN_ULONG *r, const BN_ULONG *a, const BN_ULONG *b, int n)
        {
	BN_ULONG c,l,t;
	assert(n >= 0);
	if (n <= 0) return((BN_ULONG)0);
	c=0;
#ifndef OPENSSL_SMALL_FOOTPRINT
	while (n&~3)
		{
		t=a[0];
		t=(t+c)&BN_MASK2;
		c=(t < c);
		l=(t+b[0])&BN_MASK2;
		c+=(l < t);
		r[0]=l;
		t=a[1];
		t=(t+c)&BN_MASK2;
		c=(t < c);
		l=(t+b[1])&BN_MASK2;
		c+=(l < t);
		r[1]=l;
		t=a[2];
		t=(t+c)&BN_MASK2;
		c=(t < c);
		l=(t+b[2])&BN_MASK2;
		c+=(l < t);
		r[2]=l;
		t=a[3];
		t=(t+c)&BN_MASK2;
		c=(t < c);
		l=(t+b[3])&BN_MASK2;
		c+=(l < t);
		r[3]=l;
		a+=4; b+=4; r+=4; n-=4;
		}
#endif
	while(n)
		{
		t=a[0];
		t=(t+c)&BN_MASK2;
		c=(t < c);
		l=(t+b[0])&BN_MASK2;
		c+=(l < t);
		r[0]=l;
		a++; b++; r++; n--;
		}
	return((BN_ULONG)c);
	}
['void bn_sqr_normal(BN_ULONG *r, const BN_ULONG *a, int n, BN_ULONG *tmp)\n\t{\n\tint i,j,max;\n\tconst BN_ULONG *ap;\n\tBN_ULONG *rp;\n\tmax=n*2;\n\tap=a;\n\trp=r;\n\trp[0]=rp[max-1]=0;\n\trp++;\n\tj=n;\n\tif (--j > 0)\n\t\t{\n\t\tap++;\n\t\trp[j]=bn_mul_words(rp,ap,j,ap[-1]);\n\t\trp+=2;\n\t\t}\n\tfor (i=n-2; i>0; i--)\n\t\t{\n\t\tj--;\n\t\tap++;\n\t\trp[j]=bn_mul_add_words(rp,ap,j,ap[-1]);\n\t\trp+=2;\n\t\t}\n\tbn_add_words(r,r,r,max);\n\tbn_sqr_words(tmp,a,n);\n\tbn_add_words(r,r,tmp,max);\n\t}', 'BN_ULONG bn_add_words(BN_ULONG *r, const BN_ULONG *a, const BN_ULONG *b, int n)\n        {\n\tBN_ULONG c,l,t;\n\tassert(n >= 0);\n\tif (n <= 0) return((BN_ULONG)0);\n\tc=0;\n#ifndef OPENSSL_SMALL_FOOTPRINT\n\twhile (n&~3)\n\t\t{\n\t\tt=a[0];\n\t\tt=(t+c)&BN_MASK2;\n\t\tc=(t < c);\n\t\tl=(t+b[0])&BN_MASK2;\n\t\tc+=(l < t);\n\t\tr[0]=l;\n\t\tt=a[1];\n\t\tt=(t+c)&BN_MASK2;\n\t\tc=(t < c);\n\t\tl=(t+b[1])&BN_MASK2;\n\t\tc+=(l < t);\n\t\tr[1]=l;\n\t\tt=a[2];\n\t\tt=(t+c)&BN_MASK2;\n\t\tc=(t < c);\n\t\tl=(t+b[2])&BN_MASK2;\n\t\tc+=(l < t);\n\t\tr[2]=l;\n\t\tt=a[3];\n\t\tt=(t+c)&BN_MASK2;\n\t\tc=(t < c);\n\t\tl=(t+b[3])&BN_MASK2;\n\t\tc+=(l < t);\n\t\tr[3]=l;\n\t\ta+=4; b+=4; r+=4; n-=4;\n\t\t}\n#endif\n\twhile(n)\n\t\t{\n\t\tt=a[0];\n\t\tt=(t+c)&BN_MASK2;\n\t\tc=(t < c);\n\t\tl=(t+b[0])&BN_MASK2;\n\t\tc+=(l < t);\n\t\tr[0]=l;\n\t\ta++; b++; r++; n--;\n\t\t}\n\treturn((BN_ULONG)c);\n\t}']