crypto/bn/bn_exp.c:359: error: BUFFER_OVERRUN_L3
  Offset: [-1, +oo] Size: [1, +oo] by call to `bn_to_mont_fixed_top`.
Showing all 22 steps of the trace


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.   {

crypto/bn/bn_exp.c:333:5: Call
331.       }
332.   
333.       BN_CTX_start(ctx);
           ^
334.       d = BN_CTX_get(ctx);
335.       r = 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:334:9: Call
332.   
333.       BN_CTX_start(ctx);
334.       d = BN_CTX_get(ctx);
               ^
335.       r = BN_CTX_get(ctx);
336.       val[0] = BN_CTX_get(ctx);

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:335:9: Call
333.       BN_CTX_start(ctx);
334.       d = BN_CTX_get(ctx);
335.       r = BN_CTX_get(ctx);
               ^
336.       val[0] = BN_CTX_get(ctx);
337.       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:336:14: Call
334.       d = BN_CTX_get(ctx);
335.       r = BN_CTX_get(ctx);
336.       val[0] = BN_CTX_get(ctx);
                    ^
337.       if (val[0] == NULL)
338.           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:359:10: Call
357.       } else
358.           aa = a;
359.       if (!bn_to_mont_fixed_top(val[0], aa, mont, ctx))
                ^
360.           goto err;               /* 1 */
361.   

crypto/bn/bn_mont.c:222:1: Parameter `ctx->stack.depth`
  220.   }
  221.   
  222. > int bn_to_mont_fixed_top(BIGNUM *r, const BIGNUM *a, BN_MONT_CTX *mont,
  223.                            BN_CTX *ctx)
  224.   {

crypto/bn/bn_mont.c:225:12: Call
  223.                            BN_CTX *ctx)
  224.   {
  225.       return bn_mul_mont_fixed_top(r, a, &(mont->RR), mont, ctx);
                    ^
  226.   }
  227.   

crypto/bn/bn_mont.c:60:5: Call
    58.           return 0;
    59.   
    60.       BN_CTX_start(ctx);
              ^
    61.       tmp = BN_CTX_get(ctx);
    62.       if (tmp == NULL)

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_mont.c:83:5: Call
    81.       ret = 1;
    82.    err:
    83.       BN_CTX_end(ctx);
              ^
    84.       return ret;
    85.   }

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_to_mont_fixed_top` 
        266.   static unsigned int BN_STACK_pop(BN_STACK *st)
        267.   {
        268.       return st->indexes[--(st->depth)];
                          ^
        269.   }
        270.   
