crypto/bn/bn_mont.c:155: error: BUFFER_OVERRUN_L3
  Offset: [1, 29] Size: [0, 8388607] by call to `BN_sqr`.
Showing all 14 steps of the trace


crypto/bn/bn_mont.c:149:11: Call
147.   
148.       BN_CTX_start(ctx);
149.       tmp = BN_CTX_get(ctx);
                 ^
150.       if (tmp == NULL)
151.           goto err;

crypto/bn/bn_ctx.c:284:5: Call
  282.       }
  283.       /* OK, make sure the returned bignum is "zero" */
  284.       BN_zero(ret);
             ^
  285.       ctx->used++;
  286.       CTXDBG_RET(ctx, ret);

crypto/bn/bn_lib.c:530:1: Parameter `*a->d`
    528.   }
    529.   
    530. > int BN_set_word(BIGNUM *a, BN_ULONG w)
    531.   {
    532.       bn_check_top(a);

crypto/bn/bn_mont.c:155:14: Call
153.       bn_check_top(tmp);
154.       if (a == b) {
155.           if (!BN_sqr(tmp, a, ctx))
                    ^
156.               goto err;
157.       } else {

crypto/bn/bn_sqr.c:66:1: Parameter `a->top`
  64.    * I've just gone over this and it is now %20 faster on x86 - eay - 27 Jun 96
  65.    */
  66. > int BN_sqr(BIGNUM *r, const BIGNUM *a, BN_CTX *ctx)
  67.   {
  68.       int max, al;

crypto/bn/bn_sqr.c:74:5: Assignment
  72.       bn_check_top(a);
  73.   
  74.       al = a->top;
            ^
  75.       if (al <= 0) {
  76.           r->top = 0;

crypto/bn/bn_sqr.c:109:13: Call
  107.           if (al < BN_SQR_RECURSIVE_SIZE_NORMAL) {
  108.               BN_ULONG t[BN_SQR_RECURSIVE_SIZE_NORMAL * 2];
  109.               bn_sqr_normal(rr->d, a->d, al, t);
                     ^
  110.           } else {
  111.               int j, k;

crypto/bn/bn_sqr.c:153:1: <Offset trace>
151.   
152.   /* tmp must have 2*n words */
153. > void bn_sqr_normal(BN_ULONG *r, const BN_ULONG *a, int n, BN_ULONG *tmp)
154.   {
155.       int i, j, max;

crypto/bn/bn_sqr.c:153:1: Parameter `n`
    151.   
    152.   /* tmp must have 2*n words */
    153. > void bn_sqr_normal(BN_ULONG *r, const BN_ULONG *a, int n, BN_ULONG *tmp)
    154.   {
    155.       int i, j, max;

crypto/bn/bn_sqr.c:159:5: Assignment
    157.       BN_ULONG *rp;
    158.   
    159.       max = n * 2;
               ^
    160.       ap = a;
    161.       rp = r;

crypto/bn/bn_sqr.c:153:1: <Length trace>
151.   
152.   /* tmp must have 2*n words */
153. > void bn_sqr_normal(BN_ULONG *r, const BN_ULONG *a, int n, BN_ULONG *tmp)
154.   {
155.       int i, j, max;

crypto/bn/bn_sqr.c:153:1: Parameter `*r`
    151.   
    152.   /* tmp must have 2*n words */
    153. > void bn_sqr_normal(BN_ULONG *r, const BN_ULONG *a, int n, BN_ULONG *tmp)
    154.   {
    155.       int i, j, max;

crypto/bn/bn_sqr.c:161:5: Assignment
    159.       max = n * 2;
    160.       ap = a;
    161.       rp = r;
               ^
    162.       rp[0] = rp[max - 1] = 0;
    163.       rp++;

crypto/bn/bn_sqr.c:162:13: Array access: Offset: [1, 29] Size: [0, 8388607] by call to `BN_sqr` 
    160.       ap = a;
    161.       rp = r;
    162.       rp[0] = rp[max - 1] = 0;
                       ^
    163.       rp++;
    164.       j = n;
