crypto/dh/dh_check.c:112: error: BUFFER_OVERRUN_L3
  Offset: [-4, +oo] Size: 13 by call to `BN_is_prime`.
Showing all 15 steps of the trace


crypto/dh/dh_check.c:81:6: Call
79.   
80.   	*ret=0;
81.   	ctx=BN_CTX_new();
           ^
82.   	if (ctx == NULL) goto err;
83.   	q=BN_new();

crypto/bn/bn_lib.c:319:2: Call
  317.   		}
  318.   
  319.   	BN_CTX_init(ret);
          ^
  320.   	ret->flags=BN_FLG_MALLOCED;
  321.   	return(ret);

crypto/bn/bn_lib.c:327:2: Assignment
    325.   	{
    326.   	memset(ctx,0,sizeof(BN_CTX));
    327.   	ctx->tos=0;
            ^
    328.   	ctx->flags=0;
    329.   	}

crypto/dh/dh_check.c:107:7: Call
105.   		*ret|=DH_UNABLE_TO_CHECK_GENERATOR;
106.   
107.   	if (!BN_is_prime(dh->p,BN_prime_checks,NULL,ctx,NULL))
             ^
108.   		*ret|=DH_CHECK_P_NOT_PRIME;
109.   	else

crypto/bn/bn_prime.c:210:1: Parameter `ctx_passed->tos`
  208.   	}
  209.   
  210. > int BN_is_prime(const BIGNUM *a, int checks, void (*callback)(int,int,void *),
  211.   	BN_CTX *ctx_passed, void *cb_arg)
  212.   	{

crypto/bn/bn_prime.c:213:9: Call
  211.   	BN_CTX *ctx_passed, void *cb_arg)
  212.   	{
  213.   	return BN_is_prime_fasttest(a, checks, callback, ctx_passed, cb_arg, 0);
                 ^
  214.   	}
  215.   

crypto/bn/bn_prime.c:216:1: Parameter `ctx_passed->tos`
    214.   	}
    215.   
    216. > int BN_is_prime_fasttest(const BIGNUM *a, int checks,
    217.   		void (*callback)(int,int,void *),
    218.   		BN_CTX *ctx_passed, void *cb_arg,

crypto/dh/dh_check.c:112:8: Call
110.   		{
111.   		if (!BN_rshift1(q,dh->p)) goto err;
112.   		if (!BN_is_prime(q,BN_prime_checks,NULL,ctx,NULL))
              ^
113.   			*ret|=DH_CHECK_P_NOT_SAFE_PRIME;
114.   		}

crypto/bn/bn_prime.c:210:1: Parameter `ctx_passed->tos`
  208.   	}
  209.   
  210. > int BN_is_prime(const BIGNUM *a, int checks, void (*callback)(int,int,void *),
  211.   	BN_CTX *ctx_passed, void *cb_arg)
  212.   	{

crypto/bn/bn_prime.c:213:9: Call
  211.   	BN_CTX *ctx_passed, void *cb_arg)
  212.   	{
  213.   	return BN_is_prime_fasttest(a, checks, callback, ctx_passed, cb_arg, 0);
                 ^
  214.   	}
  215.   

crypto/bn/bn_prime.c:216:1: <Offset trace>
214.   	}
215.   
216. > int BN_is_prime_fasttest(const BIGNUM *a, int checks,
217.   		void (*callback)(int,int,void *),
218.   		BN_CTX *ctx_passed, void *cb_arg,

crypto/bn/bn_prime.c:216:1: Parameter `ctx_passed->tos`
    214.   	}
    215.   
    216. > int BN_is_prime_fasttest(const BIGNUM *a, int checks,
    217.   		void (*callback)(int,int,void *),
    218.   		BN_CTX *ctx_passed, void *cb_arg,

crypto/bn/bn_prime.c:216:1: <Length trace>
214.   	}
215.   
216. > int BN_is_prime_fasttest(const BIGNUM *a, int checks,
217.   		void (*callback)(int,int,void *),
218.   		BN_CTX *ctx_passed, void *cb_arg,

crypto/bn/bn_prime.c:216:1: Parameter `ctx_passed->bn[*]`
    214.   	}
    215.   
    216. > int BN_is_prime_fasttest(const BIGNUM *a, int checks,
    217.   		void (*callback)(int,int,void *),
    218.   		BN_CTX *ctx_passed, void *cb_arg,

crypto/bn/bn_prime.c:250:3: Array access: Offset: [-4, +oo] Size: 13 by call to `BN_is_prime` 
    248.   	if (a->neg)
    249.   		{
    250.   		BIGNUM *t = &(ctx->bn[ctx->tos++]);
             ^
    251.   		BN_copy(t, a);
    252.   		t->neg = 0;
