crypto/bn/bn_sqrt.c:98: error: BUFFER_OVERRUN_L3
  Offset: 0 Size: [0, 8388607] by call to `BN_mod_exp`.
Showing all 21 steps of the trace


crypto/bn/bn_sqrt.c:60:9: Call
58.   
59.       BN_CTX_start(ctx);
60.       A = BN_CTX_get(ctx);
              ^
61.       b = BN_CTX_get(ctx);
62.       q = BN_CTX_get(ctx);

crypto/bn/bn_ctx.c:229:5: Call
  227.       }
  228.       /* OK, make sure the returned bignum is "zero" */
  229.       BN_zero(ret);
             ^
  230.       ctx->used++;
  231.       CTXDBG_RET(ctx, ret);

crypto/bn/bn_lib.c:359:1: Parameter `*a->d`
    357.   }
    358.   
    359. > int BN_set_word(BIGNUM *a, BN_ULONG w)
    360.   {
    361.       bn_check_top(a);

crypto/bn/bn_lib.c:362:9: Call
    360.   {
    361.       bn_check_top(a);
    362.       if (bn_expand(a, (int)sizeof(BN_ULONG) * 8) == NULL)
                   ^
    363.           return 0;
    364.       a->neg = 0;

crypto/bn/bn_lcl.h:660:1: Parameter `*a->d`
      658.                            const BIGNUM *add, const BIGNUM *rem, BN_CTX *ctx);
      659.   
      660. > static ossl_inline BIGNUM *bn_expand(BIGNUM *a, int bits)
      661.   {
      662.       if (bits > (INT_MAX - BN_BITS2 + 1))

crypto/bn/bn_sqrt.c:98:14: Call
96.           if (!BN_add_word(q, 1))
97.               goto end;
98.           if (!BN_mod_exp(ret, A, q, p, ctx))
                    ^
99.               goto end;
100.           err = 0;

crypto/bn/bn_exp.c:89:1: Parameter `*a->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:144:19: Call
  142.           } else
  143.   # endif
  144.               ret = BN_mod_exp_mont(r, a, p, m, ctx, NULL);
                           ^
  145.       } else
  146.   #endif

crypto/bn/bn_exp.c:296:1: Parameter `*a->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 `*a->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:654:17: Call
      652.           BIGNUM *reduced = BN_CTX_get(ctx);
      653.           if (reduced == NULL
      654.               || !BN_nnmod(reduced, a, m, ctx)) {
                             ^
      655.               goto err;
      656.           }

crypto/bn/bn_mod.c:13:1: Parameter `*m->d`
        11.   #include "bn_lcl.h"
        12.   
        13. > int BN_nnmod(BIGNUM *r, const BIGNUM *m, const BIGNUM *d, BN_CTX *ctx)
        14.   {
        15.       /*

crypto/bn/bn_mod.c:20:11: Call
        18.        */
        19.   
        20.       if (!(BN_mod(r, m, d, ctx)))
                        ^
        21.           return 0;
        22.       if (!r->neg)

crypto/bn/bn_div.c:209:1: Parameter `*num->d`
          207.    * If 'dv' or 'rm' is NULL, the respective value is not returned.
          208.    */
          209. > int BN_div(BIGNUM *dv, BIGNUM *rm, const BIGNUM *num, const BIGNUM *divisor,
          210.              BN_CTX *ctx)
          211.   {

crypto/bn/bn_div.c:229:11: Call
          227.       }
          228.   
          229.       ret = bn_div_fixed_top(dv, rm, num, divisor, ctx);
                           ^
          230.   
          231.       if (ret) {

crypto/bn/bn_div.c:264:1: Parameter `*num->d`
            262.    *       divisor's length is considered public;
            263.    */
            264. > int bn_div_fixed_top(BIGNUM *dv, BIGNUM *rm, const BIGNUM *num,
            265.                        const BIGNUM *divisor, BN_CTX *ctx)
            266.   {

crypto/bn/bn_div.c:300:11: Call
            298.        * of the same bit length.
            299.        */
            300.       if (!(bn_lshift_fixed_top(snum, num, norm_shift)))
                             ^
            301.           goto err;
            302.   

crypto/bn/bn_shift.c:107:1: <Length trace>
105.    * non-secret.
106.    */
107. > int bn_lshift_fixed_top(BIGNUM *r, const BIGNUM *a, int n)
108.   {
109.       int i, nw;

crypto/bn/bn_shift.c:107:1: Parameter `*a->d`
              105.    * non-secret.
              106.    */
              107. > int bn_lshift_fixed_top(BIGNUM *r, const BIGNUM *a, int n)
              108.   {
              109.       int i, nw;

crypto/bn/bn_shift.c:129:9: Array access: Offset: 0 Size: [0, 8388607] by call to `BN_mod_exp` 
              127.           rmask = (BN_ULONG)0 - rb;  /* rmask = 0 - (rb != 0) */
              128.           rmask |= rmask >> 8;
              129.           f = &(a->d[0]);
                             ^
              130.           t = &(r->d[nw]);
              131.           l = f[a->top - 1];
