test/bntest.c:1202: error: BUFFER_OVERRUN_L3
  Offset: [31, +oo] Size: [0, 8388607] by call to `BN_exp`.
Showing all 16 steps of the trace


test/bntest.c:1196:5: Call
1194.       e = BN_new();
1195.       one = BN_new();
1196.       BN_one(one);
            ^
1197.   
1198.       for (i = 0; i < num2; i++) {

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);

test/bntest.c:1202:13: Call
1200.           BN_bntest_rand(b, 2 + i, 0, 0);
1201.   
1202.           if (BN_exp(d, a, b, ctx) <= 0)
                    ^
1203.               return (0);
1204.   

crypto/bn/bn_exp.c:162:9: Call
  160.           goto err;
  161.   
  162.       if (BN_copy(v, a) == NULL)
                 ^
  163.           goto err;
  164.       bits = BN_num_bits(p);

crypto/bn/bn_lib.c:429:1: Parameter `a->top`
    427.   }
    428.   
    429. > BIGNUM *BN_copy(BIGNUM *a, const BIGNUM *b)
    430.   {
    431.       int i;

crypto/bn/bn_exp.c:175:14: Call
  173.   
  174.       for (i = 1; i < bits; i++) {
  175.           if (!BN_sqr(v, v, ctx))
                      ^
  176.               goto err;
  177.           if (BN_is_bit_set(p, i)) {

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:123:17: Call
    121.                   if (bn_wexpand(tmp, max) == NULL)
    122.                       goto err;
    123.                   bn_sqr_normal(rr->d, a->d, al, tmp->d);
                           ^
    124.               }
    125.           }

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: [31, +oo] Size: [0, 8388607] by call to `BN_exp` 
      160.       ap = a;
      161.       rp = r;
      162.       rp[0] = rp[max - 1] = 0;
                         ^
      163.       rp++;
      164.       j = n;
