crypto/bn/bn_prime.c:489: error: BUFFER_OVERRUN_L3
  Offset: [31, +oo] Size: [0, 8388607] by call to `BN_mod_mul`.
Showing all 21 steps of the trace


crypto/bn/bn_prime.c:482:10: Call
480.                      BN_MONT_CTX *mont)
481.   {
482.       if (!BN_mod_exp_mont(w, w, a1_odd, a, ctx, mont)) /* w := w^a1_odd mod a */
                ^
483.           return -1;
484.       if (BN_is_one(w))

crypto/bn/bn_exp.c:401:1: Parameter `a->top`
  399.   }
  400.   
  401. > int BN_mod_exp_mont(BIGNUM *rr, const BIGNUM *a, const BIGNUM *p,
  402.                       const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *in_mont)
  403.   {

crypto/bn/bn_prime.c:484:9: Call
482.       if (!BN_mod_exp_mont(w, w, a1_odd, a, ctx, mont)) /* w := w^a1_odd mod a */
483.           return -1;
484.       if (BN_is_one(w))
               ^
485.           return 0;               /* probably prime */
486.       if (BN_cmp(w, a1) == 0)

crypto/bn/bn_lib.c:904:1: Parameter `a->top`
  902.   }
  903.   
  904. > int BN_is_one(const BIGNUM *a)
  905.   {
  906.       return BN_abs_is_word(a, 1) && !a->neg;

crypto/bn/bn_lib.c:906:12: Call
  904.   int BN_is_one(const BIGNUM *a)
  905.   {
  906.       return BN_abs_is_word(a, 1) && !a->neg;
                    ^
  907.   }
  908.   

crypto/bn/bn_lib.c:894:1: Parameter `a->top`
    892.   }
    893.   
    894. > int BN_abs_is_word(const BIGNUM *a, const BN_ULONG w)
    895.   {
    896.       return ((a->top == 1) && (a->d[0] == w)) || ((w == 0) && (a->top == 0));

crypto/bn/bn_prime.c:486:9: Call
484.       if (BN_is_one(w))
485.           return 0;               /* probably prime */
486.       if (BN_cmp(w, a1) == 0)
               ^
487.           return 0;               /* w == -1 (mod a), 'a' is probably prime */
488.       while (--k) {

crypto/bn/bn_lib.c:624:1: Parameter `a->top`
  622.   }
  623.   
  624. > int BN_cmp(const BIGNUM *a, const BIGNUM *b)
  625.   {
  626.       int i;

crypto/bn/bn_prime.c:489:14: Call
487.           return 0;               /* w == -1 (mod a), 'a' is probably prime */
488.       while (--k) {
489.           if (!BN_mod_mul(w, w, w, a, ctx)) /* w := w^2 mod a */
                    ^
490.               return -1;
491.           if (BN_is_one(w))

crypto/bn/bn_mod.c:179:1: Parameter `a->top`
  177.   
  178.   /* slow but works */
  179. > int BN_mod_mul(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, const BIGNUM *m,
  180.                  BN_CTX *ctx)
  181.   {

crypto/bn/bn_mod.c:193:14: Call
  191.           goto err;
  192.       if (a == b) {
  193.           if (!BN_sqr(t, a, ctx))
                      ^
  194.               goto err;
  195.       } 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: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_mod_mul` 
      160.       ap = a;
      161.       rp = r;
      162.       rp[0] = rp[max - 1] = 0;
                         ^
      163.       rp++;
      164.       j = n;
