crypto/ec/ecp_mont.c:241: error: BUFFER_OVERRUN_L3
  Offset: [1, +oo] Size: [0, 8388607] by call to `BN_mod_exp_mont`.
Showing all 13 steps of the trace


crypto/ec/ecp_mont.c:235:10: Call
233.       if (!BN_set_word(e, 2))
234.           goto err;
235.       if (!BN_sub(e, group->field, e))
                ^
236.           goto err;
237.       /*-

crypto/bn/bn_add.c:59:19: Call
  57.           if (cmp_res > 0) {
  58.               r_neg = a->neg;
  59.               ret = BN_usub(r, a, b);
                          ^
  60.           } else if (cmp_res < 0) {
  61.               r_neg = !b->neg;

crypto/bn/bn_add.c:125:1: Parameter `r->top`
    123.   
    124.   /* unsigned subtraction of b from a, a must be larger than b. */
    125. > int BN_usub(BIGNUM *r, const BIGNUM *a, const BIGNUM *b)
    126.   {
    127.       int max, min, dif;

crypto/ec/ecp_mont.c:241:10: Call
239.        * No need for scatter-gather or BN_FLG_CONSTTIME.
240.        */
241.       if (!BN_mod_exp_mont(r, a, e, group->field, ctx, group->field_data1))
                ^
242.           goto err;
243.   

crypto/bn/bn_exp.c:296:1: Parameter `*p->d`
  294.   }
  295.   
  296. > int BN_mod_exp_mont(BIGNUM *rr, const BIGNUM *a, const BIGNUM *p,
  297.                       const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *in_mont)
  298.   {

crypto/bn/bn_exp.c:310:16: Call
  308.               || BN_get_flags(a, BN_FLG_CONSTTIME) != 0
  309.               || BN_get_flags(m, BN_FLG_CONSTTIME) != 0) {
  310.           return BN_mod_exp_mont_consttime(rr, a, p, m, ctx, in_mont);
                        ^
  311.       }
  312.   

crypto/bn/bn_exp.c:592:1: Parameter `*p->d`
    590.    * http://www.daemonology.net/hyperthreading-considered-harmful/)
    591.    */
    592. > int BN_mod_exp_mont_consttime(BIGNUM *rr, const BIGNUM *a, const BIGNUM *p,
    593.                                 const BIGNUM *m, BN_CTX *ctx,
    594.                                 BN_MONT_CTX *in_mont)

crypto/bn/bn_exp.c:1059:18: Call
    1057.           wmask = (1 << window0) - 1;
    1058.           bits -= window0;
    1059.           wvalue = bn_get_bits(p, bits) & wmask;
                             ^
    1060.           if (!MOD_EXP_CTIME_COPY_FROM_PREBUF(&tmp, top, powerbuf, wvalue,
    1061.                                               window))

crypto/bn/bn_exp.c:472:1: <Offset trace>
470.   }
471.   
472. > static BN_ULONG bn_get_bits(const BIGNUM *a, int bitpos)
473.   {
474.       BN_ULONG ret = 0;

crypto/bn/bn_exp.c:472:1: Parameter `a->top`
      470.   }
      471.   
      472. > static BN_ULONG bn_get_bits(const BIGNUM *a, int bitpos)
      473.   {
      474.       BN_ULONG ret = 0;

crypto/bn/bn_exp.c:472:1: <Length trace>
470.   }
471.   
472. > static BN_ULONG bn_get_bits(const BIGNUM *a, int bitpos)
473.   {
474.       BN_ULONG ret = 0;

crypto/bn/bn_exp.c:472:1: Parameter `*a->d`
      470.   }
      471.   
      472. > static BN_ULONG bn_get_bits(const BIGNUM *a, int bitpos)
      473.   {
      474.       BN_ULONG ret = 0;

crypto/bn/bn_exp.c:484:24: Array access: Offset: [1, +oo] Size: [0, 8388607] by call to `BN_mod_exp_mont` 
      482.               ret >>= bitpos;
      483.               if (++wordpos < a->top)
      484.                   ret |= a->d[wordpos] << (BN_BITS2 - bitpos);
                                    ^
      485.           }
      486.       }
