crypto/bn/bntest.c:845: error: BUFFER_OVERRUN_L3
  Offset: [9, +oo] (⇐ [8, +oo] + 1) Size: [0, +oo] by call to `BN_mul`.
Showing all 18 steps of the trace


crypto/bn/bntest.c:825:2: Call
823.   	c=BN_new();
824.   	d=BN_new();
825.   	BN_one(c);
        ^
826.   
827.   	BN_rand(a,200,0,0); /**/

crypto/bn/bn_lib.c:567:1: Parameter `*a->d`
  565.   	}
  566.   
  567. > int BN_set_word(BIGNUM *a, BN_ULONG w)
  568.   	{
  569.   	int i,n;

crypto/bn/bntest.c:827:2: Call
825.   	BN_one(c);
826.   
827.   	BN_rand(a,200,0,0); /**/
        ^
828.   	a->neg=rand_neg();
829.   	for (i=0; i<70; i++)

crypto/bn/bn_rand.c:65:1: Parameter `*rnd->d`
  63.   #include <openssl/rand.h>
  64.   
  65. > int BN_rand(BIGNUM *rnd, int bits, int top, int bottom)
  66.   	{
  67.   	unsigned char *buf=NULL;

crypto/bn/bntest.c:831:3: Call
829.   	for (i=0; i<70; i++)
830.   		{
831.   		BN_lshift(b,a,i+1);
         ^
832.   		BN_add(c,c,c);
833.   		if (bp != NULL)

crypto/bn/bn_shift.c:124:1: Parameter `*r->d`
  122.   	}
  123.   
  124. > int BN_lshift(BIGNUM *r, BIGNUM *a, int n)
  125.   	{
  126.   	int i,nw,lb,rb;

crypto/bn/bntest.c:832:3: Call
830.   		{
831.   		BN_lshift(b,a,i+1);
832.   		BN_add(c,c,c);
         ^
833.   		if (bp != NULL)
834.   			{

crypto/bn/bn_add.c:64:1: Parameter `*r->d`
  62.   
  63.   /* r can == a or b */
  64. > int BN_add(BIGNUM *r, BIGNUM *a, BIGNUM *b)
  65.   	{
  66.   	BIGNUM *tmp;

crypto/bn/bn_add.c:86:9: Call
  84.   		if (BN_ucmp(a,b) < 0)
  85.   			{
  86.   			if (!BN_usub(r,b,a)) return(0);
                ^
  87.   			r->neg=1;
  88.   			}

crypto/bn/bn_add.c:167:1: Parameter `*r->d`
    165.   
    166.   /* unsigned subtraction of b from a, a must be larger than b. */
    167. > int BN_usub(BIGNUM *r, BIGNUM *a, BIGNUM *b)
    168.   	{
    169.   	int max,min;

crypto/bn/bntest.c:845:3: Call
843.   			BIO_puts(bp,"\n");
844.   			}
845.   		BN_mul(d,a,c,ctx);
         ^
846.   		BN_sub(d,d,b);
847.   		if(!BN_is_zero(d))

crypto/bn/bn_mul.c:560:1: Parameter `*b->d`
  558.   #endif
  559.   
  560. > int BN_mul(BIGNUM *r, BIGNUM *a, BIGNUM *b, BN_CTX *ctx)
  561.   	{
  562.   	int top,al,bl;

crypto/bn/bn_mul.c:686:4: Call
  684.   			for (i=b->top; i<k; i++)
  685.   				b->d[i]=0;
  686.   			bn_mul_part_recursive(rr->d,a->d,b->d,al-j,j,t->d);
            ^
  687.   			}
  688.   		rr->top=top;

crypto/bn/bn_mul.c:218:1: Parameter `n`
    216.   /* n+tn is the word length
    217.    * t needs to be n*4 is size, as does r */
    218. > void bn_mul_part_recursive(BN_ULONG *r, BN_ULONG *a, BN_ULONG *b, int tn,
    219.   	     int n, BN_ULONG *t)
    220.   	{

crypto/bn/bn_mul.c:237:2: Call
    235.   	/* r=(a[0]-a[1])*(b[1]-b[0]) */
    236.   	bn_sub_words(t,      a,      &(a[n]),n); /* + */
    237.   	bn_sub_words(&(t[n]),b,      &(b[n]),n); /* - */
            ^
    238.   
    239.   /*	if (n == 4)

crypto/bn/bn_asm.c:389:1: <Length trace>
387.   #endif
388.   
389. > BN_ULONG bn_sub_words(BN_ULONG *r, BN_ULONG *a, BN_ULONG *b, int n)
390.           {
391.   	BN_ULONG t1,t2;

crypto/bn/bn_asm.c:389:1: Parameter `*b`
      387.   #endif
      388.   
      389. > BN_ULONG bn_sub_words(BN_ULONG *r, BN_ULONG *a, BN_ULONG *b, int n)
      390.           {
      391.   	BN_ULONG t1,t2;

crypto/bn/bn_asm.c:404:15: Array access: Offset: [9, +oo] (⇐ [8, +oo] + 1) Size: [0, +oo] by call to `BN_mul` 
      402.   		if (--n <= 0) break;
      403.   
      404.   		t1=a[1]; t2=b[1];
                           ^
      405.   		r[1]=(t1-t2-c)&BN_MASK2;
      406.   		if (t1 != t2) c=(t1 < t2);
