crypto/dsa/dsa_ameth.c:179: error: BUFFER_OVERRUN_L3
  Offset added: [8, +oo] Size: [0, 536870848] by call to `BN_mod_exp`.
Showing all 19 steps of the trace


crypto/dsa/dsa_ameth.c:164:13: Call
162.       /* We have parameters now set private key */
163.       if ((dsa->priv_key = BN_secure_new()) == NULL
164.           || !ASN1_INTEGER_to_BN(privkey, dsa->priv_key)) {
                   ^
165.           DSAerr(DSA_F_DSA_PRIV_DECODE, DSA_R_BN_ERROR);
166.           goto dsaerr;

crypto/asn1/a_int.c:559:12: Call
  557.   BIGNUM *ASN1_INTEGER_to_BN(const ASN1_INTEGER *ai, BIGNUM *bn)
  558.   {
  559.       return asn1_string_to_bn(ai, bn, V_ASN1_INTEGER);
                    ^
  560.   }
  561.   

crypto/asn1/a_int.c:493:1: Parameter `bn->d`
    491.   }
    492.   
    493. > static BIGNUM *asn1_string_to_bn(const ASN1_INTEGER *ai, BIGNUM *bn,
    494.                                    int itype)
    495.   {

crypto/dsa/dsa_ameth.c:179:10: Call
177.   
178.       BN_set_flags(dsa->priv_key, BN_FLG_CONSTTIME);
179.       if (!BN_mod_exp(dsa->pub_key, dsa->g, dsa->priv_key, dsa->p, ctx)) {
                ^
180.           DSAerr(DSA_F_DSA_PRIV_DECODE, DSA_R_BN_ERROR);
181.           goto dsaerr;

crypto/bn/bn_exp.c:89:1: Parameter `*r->d`
  87.   }
  88.   
  89. > int BN_mod_exp(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, const BIGNUM *m,
  90.                  BN_CTX *ctx)
  91.   {

crypto/bn/bn_exp.c:141:19: Call
  139.               && (BN_get_flags(m, BN_FLG_CONSTTIME) == 0)) {
  140.               BN_ULONG A = a->d[0];
  141.               ret = BN_mod_exp_mont_word(r, A, p, m, ctx, NULL);
                           ^
  142.           } else
  143.   # endif

crypto/bn/bn_exp.c:1095:1: Parameter `*rr->d`
    1093.   }
    1094.   
    1095. > int BN_mod_exp_mont_word(BIGNUM *rr, BN_ULONG a, const BIGNUM *p,
    1096.                            const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *in_mont)
    1097.   {

crypto/bn/bn_exp.c:1143:13: Call
    1141.           if (BN_is_one(m)) {
    1142.               ret = 1;
    1143.               BN_zero(rr);
                        ^
    1144.           } else {
    1145.               ret = BN_one(rr);

crypto/bn/bn_lib.c:387:1: Parameter `*a->d`
      385.   }
      386.   
      387. > int BN_set_word(BIGNUM *a, BN_ULONG w)
      388.   {
      389.       bn_check_top(a);

crypto/bn/bn_lib.c:390:9: Call
      388.   {
      389.       bn_check_top(a);
      390.       if (bn_expand(a, (int)sizeof(BN_ULONG) * 8) == NULL)
                     ^
      391.           return (0);
      392.       a->neg = 0;

crypto/bn/bn_lcl.h:651:1: Parameter `*a->d`
        649.                            const BIGNUM *add, const BIGNUM *rem, BN_CTX *ctx);
        650.   
        651. > static ossl_inline BIGNUM *bn_expand(BIGNUM *a, int bits)
        652.   {
        653.       if (bits > (INT_MAX - BN_BITS2 + 1))

crypto/bn/bn_lcl.h:659:12: Call
        657.           return a;
        658.   
        659.       return bn_expand2((a),(bits+BN_BITS2-1)/BN_BITS2);
                          ^
        660.   }
        661.   

crypto/bn/bn_lib.c:273:1: Parameter `*b->d`
          271.    */
          272.   
          273. > BIGNUM *bn_expand2(BIGNUM *b, int words)
          274.   {
          275.       bn_check_top(b);

crypto/bn/bn_lib.c:278:23: Call
          276.   
          277.       if (words > b->dmax) {
          278.           BN_ULONG *a = bn_expand_internal(b, words);
                                       ^
          279.           if (!a)
          280.               return NULL;

crypto/bn/bn_lib.c:235:1: <Offset trace>
233.   /* This is used by bn_expand2() */
234.   /* The caller MUST check that words > b->dmax before calling this */
235. > static BN_ULONG *bn_expand_internal(const BIGNUM *b, int words)
236.   {
237.       BN_ULONG *a = NULL;

crypto/bn/bn_lib.c:235:1: Parameter `b->top`
            233.   /* This is used by bn_expand2() */
            234.   /* The caller MUST check that words > b->dmax before calling this */
            235. > static BN_ULONG *bn_expand_internal(const BIGNUM *b, int words)
            236.   {
            237.       BN_ULONG *a = NULL;

crypto/bn/bn_lib.c:235:1: <Length trace>
233.   /* This is used by bn_expand2() */
234.   /* The caller MUST check that words > b->dmax before calling this */
235. > static BN_ULONG *bn_expand_internal(const BIGNUM *b, int words)
236.   {
237.       BN_ULONG *a = NULL;

crypto/bn/bn_lib.c:235:1: Parameter `*b->d`
            233.   /* This is used by bn_expand2() */
            234.   /* The caller MUST check that words > b->dmax before calling this */
            235. > static BN_ULONG *bn_expand_internal(const BIGNUM *b, int words)
            236.   {
            237.       BN_ULONG *a = NULL;

crypto/bn/bn_lib.c:260:9: Array access: Offset added: [8, +oo] Size: [0, 536870848] by call to `BN_mod_exp` 
            258.       assert(b->top <= words);
            259.       if (b->top > 0)
            260.           memcpy(a, b->d, sizeof(*a) * b->top);
                           ^
            261.   
            262.       return a;
