crypto/bn/bn_prime.c:225: error: BUFFER_OVERRUN_L3
  Offset added: [8, +oo] Size: [0, 67108856] by call to `witness`.
Showing all 30 steps of the trace


crypto/bn/bn_prime.c:151:1: Parameter `a->top`
149.   }
150.   
151. > int BN_is_prime_fasttest_ex(const BIGNUM *a, int checks, BN_CTX *ctx_passed,
152.                               int do_trial_division, BN_GENCB *cb)
153.   {

crypto/bn/bn_prime.c:160:9: Call
158.       BN_MONT_CTX *mont = NULL;
159.   
160.       if (BN_cmp(a, BN_value_one()) <= 0)
               ^
161.           return 0;
162.   

crypto/bn/bn_lib.c:580:1: Parameter `a->top`
  578.   }
  579.   
  580. > int BN_cmp(const BIGNUM *a, const BIGNUM *b)
  581.   {
  582.       int i;

crypto/bn/bn_prime.c:167:10: Call
165.   
166.       /* first look for small factors */
167.       if (!BN_is_odd(a))
                ^
168.           /* a is even => a is prime if and only if a == 2 */
169.           return BN_is_word(a, 2);

crypto/bn/bn_lib.c:870:1: Parameter `a->top`
  868.   }
  869.   
  870. > int BN_is_odd(const BIGNUM *a)
  871.   {
  872.       return (a->top > 0) && (a->d[0] & 1);

crypto/bn/bn_prime.c:195:10: Call
193.   
194.       /* compute A1 := a - 1 */
195.       if (!BN_copy(A1, a))
                ^
196.           goto err;
197.       if (!BN_sub_word(A1, 1))

crypto/bn/bn_lib.c:323:1: Parameter `b->top`
  321.   }
  322.   
  323. > BIGNUM *BN_copy(BIGNUM *a, const BIGNUM *b)
  324.   {
  325.       bn_check_top(b);

crypto/bn/bn_prime.c:215:10: Call
213.       if (mont == NULL)
214.           goto err;
215.       if (!BN_MONT_CTX_set(mont, a, ctx))
                ^
216.           goto err;
217.   

crypto/bn/bn_mont.c:252:9: Call
  250.       BIGNUM *Ri, *R;
  251.   
  252.       if (BN_is_zero(mod))
                 ^
  253.           return 0;
  254.   

crypto/bn/bn_lib.c:855:1: Parameter `a->top`
    853.   }
    854.   
    855. > int BN_is_zero(const BIGNUM *a)
    856.   {
    857.       return a->top == 0;

crypto/bn/bn_prime.c:225:13: Call
223.           /* now 1 <= check < a */
224.   
225.           j = witness(check, a, A1, A1_odd, k, ctx, mont);
                   ^
226.           if (j == -1)
227.               goto err;

crypto/bn/bn_prime.c:247:1: Parameter `a->top`
  245.   }
  246.   
  247. > static int witness(BIGNUM *w, const BIGNUM *a, const BIGNUM *a1,
  248.                      const BIGNUM *a1_odd, int k, BN_CTX *ctx,
  249.                      BN_MONT_CTX *mont)

crypto/bn/bn_prime.c:251:10: Call
  249.                      BN_MONT_CTX *mont)
  250.   {
  251.       if (!BN_mod_exp_mont(w, w, a1_odd, a, ctx, mont)) /* w := w^a1_odd mod a */
                  ^
  252.           return -1;
  253.       if (BN_is_one(w))

crypto/bn/bn_exp.c:291:1: Parameter `m->top`
    289.   }
    290.   
    291. > int BN_mod_exp_mont(BIGNUM *rr, const BIGNUM *a, const BIGNUM *p,
    292.                       const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *in_mont)
    293.   {

crypto/bn/bn_exp.c:303:16: Call
    301.   
    302.       if (BN_get_flags(p, BN_FLG_CONSTTIME) != 0) {
    303.           return BN_mod_exp_mont_consttime(rr, a, p, m, ctx, in_mont);
                          ^
    304.       }
    305.   

crypto/bn/bn_exp.c:591:1: Parameter `m->top`
      589.    * http://www.daemonology.net/hyperthreading-considered-harmful/)
      590.    */
      591. > int BN_mod_exp_mont_consttime(BIGNUM *rr, const BIGNUM *a, const BIGNUM *p,
      592.                                 const BIGNUM *m, BN_CTX *ctx,
      593.                                 BN_MONT_CTX *in_mont)

crypto/bn/bn_exp.c:612:10: Call
      610.       bn_check_top(m);
      611.   
      612.       if (!BN_is_odd(m)) {
                      ^
      613.           BNerr(BN_F_BN_MOD_EXP_MONT_CONSTTIME, BN_R_CALLED_WITH_EVEN_MODULUS);
      614.           return (0);

crypto/bn/bn_lib.c:870:1: Parameter `a->top`
        868.   }
        869.   
        870. > int BN_is_odd(const BIGNUM *a)
        871.   {
        872.       return (a->top > 0) && (a->d[0] & 1);

crypto/bn/bn_exp.c:642:14: Call
      640.           if ((mont = BN_MONT_CTX_new()) == NULL)
      641.               goto err;
      642.           if (!BN_MONT_CTX_set(mont, m, ctx))
                          ^
      643.               goto err;
      644.       }

crypto/bn/bn_mont.c:247:1: Parameter `mod->top`
        245.   }
        246.   
        247. > int BN_MONT_CTX_set(BN_MONT_CTX *mont, const BIGNUM *mod, BN_CTX *ctx)
        248.   {
        249.       int ret = 0;

crypto/bn/bn_mont.c:252:9: Call
        250.       BIGNUM *Ri, *R;
        251.   
        252.       if (BN_is_zero(mod))
                       ^
        253.           return 0;
        254.   

crypto/bn/bn_lib.c:855:1: Parameter `a->top`
          853.   }
          854.   
          855. > int BN_is_zero(const BIGNUM *a)
          856.   {
          857.       return a->top == 0;

crypto/bn/bn_mont.c:259:10: Call
        257.           goto err;
        258.       R = &(mont->RR);            /* grab RR as a temp */
        259.       if (!BN_copy(&(mont->N), mod))
                        ^
        260.           goto err;               /* Set N */
        261.       mont->N.neg = 0;

crypto/bn/bn_lib.c:323:1: <Offset trace>
321.   }
322.   
323. > BIGNUM *BN_copy(BIGNUM *a, const BIGNUM *b)
324.   {
325.       bn_check_top(b);

crypto/bn/bn_lib.c:323:1: Parameter `b->top`
          321.   }
          322.   
          323. > BIGNUM *BN_copy(BIGNUM *a, const BIGNUM *b)
          324.   {
          325.       bn_check_top(b);

crypto/bn/bn_lib.c:323:1: <Length trace>
321.   }
322.   
323. > BIGNUM *BN_copy(BIGNUM *a, const BIGNUM *b)
324.   {
325.       bn_check_top(b);

crypto/bn/bn_lib.c:323:1: Parameter `*a->d`
          321.   }
          322.   
          323. > BIGNUM *BN_copy(BIGNUM *a, const BIGNUM *b)
          324.   {
          325.       bn_check_top(b);

crypto/bn/bn_lib.c:329:9: Call
          327.       if (a == b)
          328.           return a;
          329.       if (bn_wexpand(a, b->top) == NULL)
                         ^
          330.           return NULL;
          331.   

crypto/bn/bn_lib.c:951:1: Parameter `*a->d`
            949.   }
            950.   
            951. > BIGNUM *bn_wexpand(BIGNUM *a, int words)
            952.   {
            953.       return (words <= a->dmax) ? a : bn_expand2(a, words);

crypto/bn/bn_lib.c:333:9: Array access: Offset added: [8, +oo] Size: [0, 67108856] by call to `witness` 
          331.   
          332.       if (b->top > 0)
          333.           memcpy(a->d, b->d, sizeof(b->d[0]) * b->top);
                         ^
          334.   
          335.       if (BN_get_flags(b, BN_FLG_CONSTTIME) != 0)
