test/bntest.c:2107: error: BUFFER_OVERRUN_L3
  Offset: [-1, +oo] Size: [1, +oo] by call to `BN_mod_exp`.
Showing all 39 steps of the trace


test/bntest.c:2107:14: Call
2105.       /* Calculate r = 1 ^ 0 mod 1, and check the result is always 0 */
2106.       for (i = 0; i < 2; i++) {
2107.           if (!TEST_true(BN_mod_exp(r, a, p, m, NULL))
                     ^
2108.                   || !TEST_BN_eq_zero(r)
2109.                   || !TEST_true(BN_mod_exp_mont(r, a, p, m, NULL, NULL))

crypto/bn/bn_exp.c:89:1: Parameter `ctx->stack.depth`
  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:1129:1: Parameter `ctx->stack.depth`
    1127.   }
    1128.   
    1129. > int BN_mod_exp_mont_word(BIGNUM *rr, BN_ULONG a, const BIGNUM *p,
    1130.                            const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *in_mont)
    1131.   {

test/bntest.c:2109:21: Call
2107.           if (!TEST_true(BN_mod_exp(r, a, p, m, NULL))
2108.                   || !TEST_BN_eq_zero(r)
2109.                   || !TEST_true(BN_mod_exp_mont(r, a, p, m, NULL, NULL))
                            ^
2110.                   || !TEST_BN_eq_zero(r)
2111.                   || !TEST_true(BN_mod_exp_mont_consttime(r, a, p, m, NULL, NULL))

crypto/bn/bn_exp.c:296:1: Parameter `ctx->stack.depth`
  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.   {

test/bntest.c:2111:21: Call
2109.                   || !TEST_true(BN_mod_exp_mont(r, a, p, m, NULL, NULL))
2110.                   || !TEST_BN_eq_zero(r)
2111.                   || !TEST_true(BN_mod_exp_mont_consttime(r, a, p, m, NULL, NULL))
                            ^
2112.                   || !TEST_BN_eq_zero(r)
2113.                   || !TEST_true(BN_mod_exp_mont_word(r, 1, p, m, NULL, NULL))

crypto/bn/bn_exp.c:592:1: Parameter `ctx->stack.depth`
  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)

test/bntest.c:2113:21: Call
2111.                   || !TEST_true(BN_mod_exp_mont_consttime(r, a, p, m, NULL, NULL))
2112.                   || !TEST_BN_eq_zero(r)
2113.                   || !TEST_true(BN_mod_exp_mont_word(r, 1, p, m, NULL, NULL))
                            ^
2114.                   || !TEST_BN_eq_zero(r)
2115.                   || !TEST_true(BN_mod_exp_simple(r, a, p, m, NULL))

crypto/bn/bn_exp.c:1129:1: Parameter `ctx->stack.depth`
  1127.   }
  1128.   
  1129. > int BN_mod_exp_mont_word(BIGNUM *rr, BN_ULONG a, const BIGNUM *p,
  1130.                            const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *in_mont)
  1131.   {

test/bntest.c:2115:21: Call
2113.                   || !TEST_true(BN_mod_exp_mont_word(r, 1, p, m, NULL, NULL))
2114.                   || !TEST_BN_eq_zero(r)
2115.                   || !TEST_true(BN_mod_exp_simple(r, a, p, m, NULL))
                            ^
2116.                   || !TEST_BN_eq_zero(r)
2117.                   || !TEST_true(BN_mod_exp_recp(r, a, p, m, NULL))

crypto/bn/bn_exp.c:1277:1: Parameter `ctx->stack.depth`
  1275.   
  1276.   /* The old fallback, simple version :-) */
  1277. > int BN_mod_exp_simple(BIGNUM *r, const BIGNUM *a, const BIGNUM *p,
  1278.                         const BIGNUM *m, BN_CTX *ctx)
  1279.   {

test/bntest.c:2117:21: Call
2115.                   || !TEST_true(BN_mod_exp_simple(r, a, p, m, NULL))
2116.                   || !TEST_BN_eq_zero(r)
2117.                   || !TEST_true(BN_mod_exp_recp(r, a, p, m, NULL))
                            ^
2118.                   || !TEST_BN_eq_zero(r))
2119.               goto err;

crypto/bn/bn_exp.c:161:1: Parameter `ctx->stack.depth`
  159.   }
  160.   
  161. > int BN_mod_exp_recp(BIGNUM *r, const BIGNUM *a, const BIGNUM *p,
  162.                       const BIGNUM *m, BN_CTX *ctx)
  163.   {

test/bntest.c:2107:14: Call
2105.       /* Calculate r = 1 ^ 0 mod 1, and check the result is always 0 */
2106.       for (i = 0; i < 2; i++) {
2107.           if (!TEST_true(BN_mod_exp(r, a, p, m, NULL))
                     ^
2108.                   || !TEST_BN_eq_zero(r)
2109.                   || !TEST_true(BN_mod_exp_mont(r, a, p, m, NULL, NULL))

crypto/bn/bn_exp.c:89:1: Parameter `ctx->stack.depth`
  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:149:15: Call
  147.   #ifdef RECP_MUL_MOD
  148.       {
  149.           ret = BN_mod_exp_recp(r, a, p, m, ctx);
                       ^
  150.       }
  151.   #else

crypto/bn/bn_exp.c:161:1: Parameter `ctx->stack.depth`
    159.   }
    160.   
    161. > int BN_mod_exp_recp(BIGNUM *r, const BIGNUM *a, const BIGNUM *p,
    162.                       const BIGNUM *m, BN_CTX *ctx)
    163.   {

crypto/bn/bn_exp.c:191:5: Call
    189.       }
    190.   
    191.       BN_CTX_start(ctx);
               ^
    192.       aa = BN_CTX_get(ctx);
    193.       val[0] = BN_CTX_get(ctx);

crypto/bn/bn_ctx.c:171:1: Parameter `ctx->stack.depth`
      169.   }
      170.   
      171. > void BN_CTX_start(BN_CTX *ctx)
      172.   {
      173.       CTXDBG("ENTER BN_CTX_start()", ctx);

crypto/bn/bn_exp.c:192:10: Call
    190.   
    191.       BN_CTX_start(ctx);
    192.       aa = BN_CTX_get(ctx);
                    ^
    193.       val[0] = BN_CTX_get(ctx);
    194.       if (val[0] == NULL)

crypto/bn/bn_ctx.c:202:1: Parameter `ctx->stack.depth`
      200.   }
      201.   
      202. > BIGNUM *BN_CTX_get(BN_CTX *ctx)
      203.   {
      204.       BIGNUM *ret;

crypto/bn/bn_exp.c:193:14: Call
    191.       BN_CTX_start(ctx);
    192.       aa = BN_CTX_get(ctx);
    193.       val[0] = BN_CTX_get(ctx);
                        ^
    194.       if (val[0] == NULL)
    195.           goto err;

crypto/bn/bn_ctx.c:202:1: Parameter `ctx->stack.depth`
      200.   }
      201.   
      202. > BIGNUM *BN_CTX_get(BN_CTX *ctx)
      203.   {
      204.       BIGNUM *ret;

crypto/bn/bn_exp.c:210:10: Call
    208.       }
    209.   
    210.       if (!BN_nnmod(val[0], a, m, ctx))
                    ^
    211.           goto err;               /* 1 */
    212.       if (BN_is_zero(val[0])) {

crypto/bn/bn_mod.c:13:1: Parameter `ctx->stack.depth`
      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 `ctx->stack.depth`
        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:280:5: Call
          278.       bn_check_top(rm);
          279.   
          280.       BN_CTX_start(ctx);
                     ^
          281.       res = (dv == NULL) ? BN_CTX_get(ctx) : dv;
          282.       tmp = BN_CTX_get(ctx);

crypto/bn/bn_ctx.c:171:1: Parameter `*ctx->stack.indexes`
            169.   }
            170.   
            171. > void BN_CTX_start(BN_CTX *ctx)
            172.   {
            173.       CTXDBG("ENTER BN_CTX_start()", ctx);

crypto/bn/bn_div.c:450:5: Call
          448.       if (rm != NULL)
          449.           bn_rshift_fixed_top(rm, snum, norm_shift);
          450.       BN_CTX_end(ctx);
                     ^
          451.       return 1;
          452.    err:

crypto/bn/bn_ctx.c:185:1: Parameter `*ctx->stack.indexes`
            183.   }
            184.   
            185. > void BN_CTX_end(BN_CTX *ctx)
            186.   {
            187.       CTXDBG("ENTER BN_CTX_end()", ctx);

crypto/bn/bn_ctx.c:191:27: Call
            189.           ctx->err_stack--;
            190.       else {
            191.           unsigned int fp = BN_STACK_pop(&ctx->stack);
                                             ^
            192.           /* Does this stack frame have anything to release? */
            193.           if (fp < ctx->used)

crypto/bn/bn_ctx.c:266:1: <Offset trace>
264.   }
265.   
266. > static unsigned int BN_STACK_pop(BN_STACK *st)
267.   {
268.       return st->indexes[--(st->depth)];

crypto/bn/bn_ctx.c:266:1: Parameter `st->depth`
              264.   }
              265.   
              266. > static unsigned int BN_STACK_pop(BN_STACK *st)
              267.   {
              268.       return st->indexes[--(st->depth)];

crypto/bn/bn_ctx.c:266:1: <Length trace>
264.   }
265.   
266. > static unsigned int BN_STACK_pop(BN_STACK *st)
267.   {
268.       return st->indexes[--(st->depth)];

crypto/bn/bn_ctx.c:266:1: Parameter `*st->indexes`
              264.   }
              265.   
              266. > static unsigned int BN_STACK_pop(BN_STACK *st)
              267.   {
              268.       return st->indexes[--(st->depth)];

crypto/bn/bn_ctx.c:268:12: Array access: Offset: [-1, +oo] Size: [1, +oo] by call to `BN_mod_exp` 
              266.   static unsigned int BN_STACK_pop(BN_STACK *st)
              267.   {
              268.       return st->indexes[--(st->depth)];
                                ^
              269.   }
              270.   
