crypto/dh/dh_key.c:106: error: BUFFER_OVERRUN_L3
  Offset: [4, +oo] (⇐ [0, +oo] + 4) Size: [0, +oo] by call to `BN_mod_exp_mont`.
Showing all 13 steps of the trace


crypto/dh/dh_key.c:65:1: Parameter `dh->method_mont_p->RR.d`
63.   #include <openssl/dh.h>
64.   
65. > int DH_generate_key(DH *dh)
66.   	{
67.   	int ok=0;

crypto/dh/dh_key.c:106:7: Call
104.   	mont=(BN_MONT_CTX *)dh->method_mont_p;
105.   
106.   	if (!BN_mod_exp_mont(pub_key,dh->g,priv_key,dh->p,&ctx,mont)) goto err;
             ^
107.   		
108.   	dh->pub_key=pub_key;

crypto/bn/bn_exp.c:299:1: Parameter `*in_mont->RR.d`
  297.   
  298.   /* #ifdef MONT_MUL_MOD */
  299. > int BN_mod_exp_mont(BIGNUM *rr, BIGNUM *a, BIGNUM *p, BIGNUM *m, BN_CTX *ctx,
  300.   	     BN_MONT_CTX *in_mont)
  301.   	{

crypto/bn/bn_exp.c:348:7: Call
  346.   	else
  347.   		aa=a;
  348.   	if (!BN_to_montgomery(&(val[0]),aa,mont,ctx)) goto err; /* 1 */
               ^
  349.   	if (!BN_mod_mul_montgomery(d,&(val[0]),&(val[0]),mont,ctx)) goto err; /* 2 */
  350.   

crypto/bn/bn_mont.c:71:1: Parameter `*b->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_exp.c:376:14: Call
  374.   	wend=0;		/* The bottom bit of the window */
  375.   
  376.           if (!BN_to_montgomery(r,BN_value_one(),mont,ctx)) goto err;
                      ^
  377.   	for (;;)
  378.   		{

crypto/bn/bn_mont.c:71:1: Parameter `*b->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:98:8: Call
    96.   	else
    97.   		{
    98.   		if (!BN_mul(tmp,a,b,ctx)) goto err;
                  ^
    99.   		}
    100.   	/* reduce from aRR to aR */

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:619:4: Call
      617.   			if (bn_wexpand(rr,top) == NULL) return(0);
      618.   			rr->top=top;
      619.   			bn_mul_normal(rr->d,a->d,al,b->d,bl);
                ^
      620.   			goto end;
      621.   			}

crypto/bn/bn_mul.c:699:1: <Length trace>
697.   	}
698.   
699. > void bn_mul_normal(BN_ULONG *r, BN_ULONG *a, int na, BN_ULONG *b, int nb)
700.   	{
701.   	BN_ULONG *rr;

crypto/bn/bn_mul.c:699:1: Parameter `*b`
        697.   	}
        698.   
        699. > void bn_mul_normal(BN_ULONG *r, BN_ULONG *a, int na, BN_ULONG *b, int nb)
        700.   	{
        701.   	BN_ULONG *rr;

crypto/bn/bn_mul.c:728:39: Array access: Offset: [4, +oo] (⇐ [0, +oo] + 4) Size: [0, +oo] by call to `BN_mod_exp_mont` 
        726.   		rr[3]=bn_mul_add_words(&(r[3]),a,na,b[3]);
        727.   		if (--nb <= 0) return;
        728.   		rr[4]=bn_mul_add_words(&(r[4]),a,na,b[4]);
                                                     ^
        729.   		rr+=4;
        730.   		r+=4;
