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


test/bntest.c:859:21: Call
857.           }
858.   
859.           kronecker = BN_kronecker(a, b, ctx);
                           ^
860.           if (kronecker < -1)
861.               goto err;

crypto/bn/bn_kron.c:17:1: Parameter `ctx->stack.depth`
  15.   
  16.   /* Returns -2 for errors because both -1 and 0 are valid results. */
  17. > int BN_kronecker(const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx)
  18.   {
  19.       int i;

crypto/bn/bn_kron.c:35:5: Call
  33.       bn_check_top(b);
  34.   
  35.       BN_CTX_start(ctx);
            ^
  36.       A = BN_CTX_get(ctx);
  37.       B = BN_CTX_get(ctx);

crypto/bn/bn_ctx.c:181:1: Parameter `ctx->stack.depth`
    179.   }
    180.   
    181. > void BN_CTX_start(BN_CTX *ctx)
    182.   {
    183.       CTXDBG_ENTRY("BN_CTX_start", ctx);

crypto/bn/bn_kron.c:135:5: Call
  133.       }
  134.    end:
  135.       BN_CTX_end(ctx);
             ^
  136.       if (err)
  137.           return -2;

crypto/bn/bn_ctx.c:195:1: Parameter `ctx->stack.depth`
    193.   }
    194.   
    195. > void BN_CTX_end(BN_CTX *ctx)
    196.   {
    197.       CTXDBG_ENTRY("BN_CTX_end", ctx);

test/bntest.c:841:14: Call
839.           b->neg = 0;
840.   
841.           if (!BN_mod_exp_recp(r, a, t, b, ctx))
                    ^
842.               goto err;
843.           b->neg = 1;

crypto/bn/bn_exp.c:168:1: Parameter `ctx->stack.depth`
  166.   }
  167.   
  168. > int BN_mod_exp_recp(BIGNUM *r, const BIGNUM *a, const BIGNUM *p,
  169.                       const BIGNUM *m, BN_CTX *ctx)
  170.   {

crypto/bn/bn_exp.c:196:5: Call
  194.       }
  195.   
  196.       BN_CTX_start(ctx);
             ^
  197.       aa = BN_CTX_get(ctx);
  198.       val[0] = BN_CTX_get(ctx);

crypto/bn/bn_ctx.c:181:1: Parameter `ctx->stack.depth`
    179.   }
    180.   
    181. > void BN_CTX_start(BN_CTX *ctx)
    182.   {
    183.       CTXDBG_ENTRY("BN_CTX_start", ctx);

crypto/bn/bn_exp.c:215:10: Call
  213.       }
  214.   
  215.       if (!BN_nnmod(val[0], a, m, ctx))
                  ^
  216.           goto err;               /* 1 */
  217.       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:193:5: Call
      191.       }
      192.   
      193.       BN_CTX_start(ctx);
                 ^
      194.       tmp = BN_CTX_get(ctx);
      195.       snum = BN_CTX_get(ctx);

crypto/bn/bn_ctx.c:181:1: Parameter `*ctx->stack.indexes`
        179.   }
        180.   
        181. > void BN_CTX_start(BN_CTX *ctx)
        182.   {
        183.       CTXDBG_ENTRY("BN_CTX_start", ctx);

crypto/bn/bn_div.c:416:5: Call
      414.       if (no_branch)
      415.           bn_correct_top(res);
      416.       BN_CTX_end(ctx);
                 ^
      417.       return (1);
      418.    err:

crypto/bn/bn_ctx.c:195:1: Parameter `*ctx->stack.indexes`
        193.   }
        194.   
        195. > void BN_CTX_end(BN_CTX *ctx)
        196.   {
        197.       CTXDBG_ENTRY("BN_CTX_end", ctx);

crypto/bn/bn_ctx.c:201:27: Call
        199.           ctx->err_stack--;
        200.       else {
        201.           unsigned int fp = BN_STACK_pop(&ctx->stack);
                                         ^
        202.           /* Does this stack frame have anything to release? */
        203.           if (fp < ctx->used)

crypto/bn/bn_ctx.c:271:1: <Offset trace>
269.   }
270.   
271. > static unsigned int BN_STACK_pop(BN_STACK *st)
272.   {
273.       return st->indexes[--(st->depth)];

crypto/bn/bn_ctx.c:271:1: Parameter `st->depth`
          269.   }
          270.   
          271. > static unsigned int BN_STACK_pop(BN_STACK *st)
          272.   {
          273.       return st->indexes[--(st->depth)];

crypto/bn/bn_ctx.c:271:1: <Length trace>
269.   }
270.   
271. > static unsigned int BN_STACK_pop(BN_STACK *st)
272.   {
273.       return st->indexes[--(st->depth)];

crypto/bn/bn_ctx.c:271:1: Parameter `*st->indexes`
          269.   }
          270.   
          271. > static unsigned int BN_STACK_pop(BN_STACK *st)
          272.   {
          273.       return st->indexes[--(st->depth)];

crypto/bn/bn_ctx.c:273:12: Array access: Offset: [-1, +oo] Size: [1, +oo] by call to `BN_mod_exp_recp` 
          271.   static unsigned int BN_STACK_pop(BN_STACK *st)
          272.   {
          273.       return st->indexes[--(st->depth)];
                            ^
          274.   }
          275.   
