crypto/dh/dh_pmeth.c:375: error: BUFFER_OVERRUN_L3
  Offset added: [8, +oo] Size: [0, 67108856] by call to `DSA_dup_DH`.
Showing all 15 steps of the trace


crypto/dh/dh_pmeth.c:371:18: Call
369.       if (dctx->use_dsa) {
370.           DSA *dsa_dh;
371.           dsa_dh = dsa_dh_generate(dctx, pcb);
                        ^
372.           BN_GENCB_free(pcb);
373.           if (dsa_dh == NULL)

crypto/dh/dh_pmeth.c:316:14: Call
  314.                                     NULL, 0, NULL, NULL, NULL, pcb);
  315.       else if (dctx->use_dsa == 2)
  316.           rv = dsa_builtin_paramgen2(ret, prime_len, subprime_len, md,
                      ^
  317.                                      NULL, 0, -1, NULL, NULL, NULL, pcb);
  318.       if (rv <= 0) {

crypto/dsa/dsa_gen.c:307:1: Parameter `ret->q->top`
    305.    */
    306.   
    307. > int dsa_builtin_paramgen2(DSA *ret, size_t L, size_t N,
    308.                             const EVP_MD *evpmd, const unsigned char *seed_in,
    309.                             size_t seed_len, int idx, unsigned char *seed_out,

crypto/dh/dh_pmeth.c:375:14: Call
373.           if (dsa_dh == NULL)
374.               return 0;
375.           dh = DSA_dup_DH(dsa_dh);
                    ^
376.           DSA_free(dsa_dh);
377.           if (!dh)

crypto/dsa/dsa_lib.c:184:1: Parameter `r->p->top`
  182.   
  183.   #ifndef OPENSSL_NO_DH
  184. > DH *DSA_dup_DH(const DSA *r)
  185.   {
  186.       /*

crypto/dsa/dsa_lib.c:204:13: Call
  202.               goto err;
  203.           }
  204.           p = BN_dup(r->p);
                     ^
  205.           g = BN_dup(r->g);
  206.           q = BN_dup(r->q);

crypto/bn/bn_lib.c:261:1: Parameter `a->top`
    259.   }
    260.   
    261. > BIGNUM *BN_dup(const BIGNUM *a)
    262.   {
    263.       BIGNUM *t;

crypto/bn/bn_lib.c:272:10: Call
    270.       if (t == NULL)
    271.           return NULL;
    272.       if (!BN_copy(t, a)) {
                    ^
    273.           BN_free(t);
    274.           return NULL;

crypto/bn/bn_lib.c:280:1: <Offset trace>
278.   }
279.   
280. > BIGNUM *BN_copy(BIGNUM *a, const BIGNUM *b)
281.   {
282.       bn_check_top(b);

crypto/bn/bn_lib.c:280:1: Parameter `b->top`
      278.   }
      279.   
      280. > BIGNUM *BN_copy(BIGNUM *a, const BIGNUM *b)
      281.   {
      282.       bn_check_top(b);

crypto/bn/bn_lib.c:280:1: <Length trace>
278.   }
279.   
280. > BIGNUM *BN_copy(BIGNUM *a, const BIGNUM *b)
281.   {
282.       bn_check_top(b);

crypto/bn/bn_lib.c:280:1: Parameter `*a->d`
      278.   }
      279.   
      280. > BIGNUM *BN_copy(BIGNUM *a, const BIGNUM *b)
      281.   {
      282.       bn_check_top(b);

crypto/bn/bn_lib.c:286:9: Call
      284.       if (a == b)
      285.           return a;
      286.       if (bn_wexpand(a, b->top) == NULL)
                     ^
      287.           return NULL;
      288.   

crypto/bn/bn_lib.c:942:1: Parameter `*a->d`
        940.   }
        941.   
        942. > BIGNUM *bn_wexpand(BIGNUM *a, int words)
        943.   {
        944.       return (words <= a->dmax) ? a : bn_expand2(a, words);

crypto/bn/bn_lib.c:290:9: Array access: Offset added: [8, +oo] Size: [0, 67108856] by call to `DSA_dup_DH` 
      288.   
      289.       if (b->top > 0)
      290.           memcpy(a->d, b->d, sizeof(b->d[0]) * b->top);
                     ^
      291.   
      292.       a->neg = b->neg;
