crypto/bn/bntest.c:517: error: BUFFER_OVERRUN_L3
  Offset: [1, +oo] Size: [0, +oo] by call to `BN_mod_mul_montgomery`.
Showing all 17 steps of the trace


crypto/bn/bntest.c:517:3: Call
515.   		BN_MONT_CTX_set(mont,&n,ctx);
516.   
517.   		BN_to_montgomery(&A,&a,mont,ctx);
         ^
518.   		BN_to_montgomery(&B,&b,mont,ctx);
519.   

crypto/bn/bn_mont.c:71:1: Parameter `*r->d`
  69.   #define MONT_WORD
  70.   
  71. > int BN_mod_mul_montgomery(BIGNUM *r, BIGNUM *a, BIGNUM *b, BN_MONT_CTX *mont,
  72.   	     BN_CTX *ctx)
  73.   	{

crypto/bn/bntest.c:523:3: Call
521.   			for (j=0; j<100; j++)
522.   				BN_mod_mul_montgomery(&c,&A,&B,mont,ctx);/**/
523.   		BN_mod_mul_montgomery(&c,&A,&B,mont,ctx);/**/
         ^
524.   		BN_from_montgomery(&A,&c,mont,ctx);/**/
525.   		if (bp != NULL)

crypto/bn/bn_mont.c:71:1: Parameter `*a->d`
  69.   #define MONT_WORD
  70.   
  71. > int BN_mod_mul_montgomery(BIGNUM *r, BIGNUM *a, BIGNUM *b, BN_MONT_CTX *mont,
  72.   	     BN_CTX *ctx)
  73.   	{

crypto/bn/bn_mont.c:93:8: Call
  91.   			tmp->top--;
  92.   #else
  93.   		if (!BN_sqr(tmp,a,ctx)) goto err;
               ^
  94.   #endif
  95.   		}

crypto/bn/bn_sqr.c:65:1: Parameter `*a->d`
    63.   /* r must not be a */
    64.   /* I've just gone over this and it is now %20 faster on x86 - eay - 27 Jun 96 */
    65. > int BN_sqr(BIGNUM *r, BIGNUM *a, BN_CTX *ctx)
    66.   	{
    67.   	int max,al;

crypto/bn/bntest.c:524:3: Call
522.   				BN_mod_mul_montgomery(&c,&A,&B,mont,ctx);/**/
523.   		BN_mod_mul_montgomery(&c,&A,&B,mont,ctx);/**/
524.   		BN_from_montgomery(&A,&c,mont,ctx);/**/
         ^
525.   		if (bp != NULL)
526.   			{

crypto/bn/bn_mont.c:108:1: Parameter `*ret->d`
  106.   	}
  107.   
  108. > int BN_from_montgomery(BIGNUM *ret, BIGNUM *a, BN_MONT_CTX *mont,
  109.   	     BN_CTX *ctx)
  110.   	{

crypto/bn/bntest.c:517:3: Call
515.   		BN_MONT_CTX_set(mont,&n,ctx);
516.   
517.   		BN_to_montgomery(&A,&a,mont,ctx);
         ^
518.   		BN_to_montgomery(&B,&b,mont,ctx);
519.   

crypto/bn/bn_mont.c:71:1: Parameter `*r->d`
  69.   #define MONT_WORD
  70.   
  71. > int BN_mod_mul_montgomery(BIGNUM *r, BIGNUM *a, BIGNUM *b, BN_MONT_CTX *mont,
  72.   	     BN_CTX *ctx)
  73.   	{

crypto/bn/bn_mont.c:101:7: Call
  99.   		}
  100.   	/* reduce from aRR to aR */
  101.   	if (!BN_from_montgomery(r,tmp,mont,ctx)) goto err;
               ^
  102.   	ctx->tos-=2;
  103.   	return(1);

crypto/bn/bn_mont.c:184:8: <Offset trace>
182.   		ret->top=al;
183.   		al-=4;
184.   		for (i=0; i<al; i+=4)
              ^
185.   			{
186.   			BN_ULONG t1,t2,t3,t4;

crypto/bn/bn_mont.c:184:8: Assignment
    182.   		ret->top=al;
    183.   		al-=4;
    184.   		for (i=0; i<al; i+=4)
                  ^
    185.   			{
    186.   			BN_ULONG t1,t2,t3,t4;

crypto/bn/bn_mont.c:108:1: <Length trace>
106.   	}
107.   
108. > int BN_from_montgomery(BIGNUM *ret, BIGNUM *a, BN_MONT_CTX *mont,
109.   	     BN_CTX *ctx)
110.   	{

crypto/bn/bn_mont.c:108:1: Parameter `*ret->d`
    106.   	}
    107.   
    108. > int BN_from_montgomery(BIGNUM *ret, BIGNUM *a, BN_MONT_CTX *mont,
    109.   	     BN_CTX *ctx)
    110.   	{

crypto/bn/bn_mont.c:176:3: Assignment
    174.   #else
    175.   		x=ri;
    176.   		rp=ret->d;
             ^
    177.   		ap= &(r->d[x]);
    178.   		if (r->top < x)

crypto/bn/bn_mont.c:193:4: Array access: Offset: [1, +oo] Size: [0, +oo] by call to `BN_mod_mul_montgomery` 
    191.   			t4=ap[i+3];
    192.   			rp[i+0]=t1;
    193.   			rp[i+1]=t2;
              ^
    194.   			rp[i+2]=t3;
    195.   			rp[i+3]=t4;
