apps/s_client.c:331: error: BUFFER_OVERRUN_L3
  Offset: [1, +oo] Size: [0, 8388607] by call to `BN_is_prime_ex`.
Showing all 24 steps of the trace


apps/s_client.c:328:9: Call
326.       int ret =
327.           g != NULL && N != NULL && bn_ctx != NULL && BN_is_odd(N) &&
328.           BN_is_prime_ex(N, SRP_NUMBER_ITERATIONS_FOR_PRIME, bn_ctx, NULL) &&
               ^
329.           p != NULL && BN_rshift1(p, N) &&
330.           /* p = (N-1)/2 */

crypto/bn/bn_prime.c:303:12: Call
  301.                      BN_GENCB *cb)
  302.   {
  303.       return BN_is_prime_fasttest_ex(a, checks, ctx_passed, 0, cb);
                    ^
  304.   }
  305.   

crypto/bn/bn_prime.c:377:10: Call
    375.       if (mont == NULL)
    376.           goto err;
    377.       if (!BN_MONT_CTX_set(mont, A, ctx))
                    ^
    378.           goto err;
    379.   

crypto/bn/bn_mont.c:358:15: Call
      356.   
      357.       BN_CTX_start(ctx);
      358.       if ((Ri = BN_CTX_get(ctx)) == NULL)
                           ^
      359.           goto err;
      360.       R = &(mont->RR);            /* grab RR as a temp */

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:428:14: Call
      426.           tmod.top = buf[0] != 0 ? 1 : 0;
      427.           /* Ri = R^-1 mod N */
      428.           if ((BN_mod_inverse(Ri, R, &tmod, ctx)) == NULL)
                          ^
      429.               goto err;
      430.           if (!BN_lshift(Ri, Ri, BN_BITS2))

crypto/bn/bn_gcd.c:226:1: Parameter `*in->d`
        224.                                           BN_CTX *ctx);
        225.   
        226. > BIGNUM *BN_mod_inverse(BIGNUM *in,
        227.                          const BIGNUM *a, const BIGNUM *n, BN_CTX *ctx)
        228.   {

crypto/bn/bn_gcd.c:231:10: Call
        229.       BIGNUM *rv;
        230.       int noinv;
        231.       rv = int_bn_mod_inverse(in, a, n, ctx, &noinv);
                        ^
        232.       if (noinv)
        233.           BNerr(BN_F_BN_MOD_INVERSE, BN_R_NO_INVERSE);

crypto/bn/bn_gcd.c:237:1: Parameter `*in->d`
          235.   }
          236.   
          237. > BIGNUM *int_bn_mod_inverse(BIGNUM *in,
          238.                              const BIGNUM *a, const BIGNUM *n, BN_CTX *ctx,
          239.                              int *pnoinv)

crypto/bn/bn_gcd.c:533:18: Call
          531.           /* Y*a == 1  (mod |n|) */
          532.           if (!Y->neg && BN_ucmp(Y, n) < 0) {
          533.               if (!BN_copy(R, Y))
                                  ^
          534.                   goto err;
          535.           } else {

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

apps/s_client.c:331:9: Call
329.           p != NULL && BN_rshift1(p, N) &&
330.           /* p = (N-1)/2 */
331.           BN_is_prime_ex(p, SRP_NUMBER_ITERATIONS_FOR_PRIME, bn_ctx, NULL) &&
               ^
332.           r != NULL &&
333.           /* verify g^((N-1)/2) == -1 (mod N) */

crypto/bn/bn_prime.c:300:1: Parameter `*a->d`
  298.   }
  299.   
  300. > int BN_is_prime_ex(const BIGNUM *a, int checks, BN_CTX *ctx_passed,
  301.                      BN_GENCB *cb)
  302.   {

crypto/bn/bn_prime.c:303:12: Call
  301.                      BN_GENCB *cb)
  302.   {
  303.       return BN_is_prime_fasttest_ex(a, checks, ctx_passed, 0, cb);
                    ^
  304.   }
  305.   

crypto/bn/bn_prime.c:306:1: Parameter `*a->d`
    304.   }
    305.   
    306. > int BN_is_prime_fasttest_ex(const BIGNUM *a, int checks, BN_CTX *ctx_passed,
    307.                               int do_trial_division, BN_GENCB *cb)
    308.   {

crypto/bn/bn_prime.c:387:13: Call
    385.           /* now 1 <= check < A */
    386.   
    387.           j = witness(check, A, A1, A1_odd, k, ctx, mont);
                       ^
    388.           if (j == -1)
    389.               goto err;

crypto/bn/bn_prime.c:478:1: Parameter `*a->d`
      476.   }
      477.   
      478. > static int witness(BIGNUM *w, const BIGNUM *a, const BIGNUM *a1,
      479.                      const BIGNUM *a1_odd, int k, BN_CTX *ctx,
      480.                      BN_MONT_CTX *mont)

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:496:14: <Offset trace>
494.           /* 2^(top*BN_BITS2) - m */
495.           r->d[0] = (0 - m->d[0]) & BN_MASK2;
496.           for (i = 1; i < j; i++)
                    ^
497.               r->d[i] = (~m->d[i]) & BN_MASK2;
498.           r->top = j;

crypto/bn/bn_exp.c:496:14: Assignment
        494.           /* 2^(top*BN_BITS2) - m */
        495.           r->d[0] = (0 - m->d[0]) & BN_MASK2;
        496.           for (i = 1; i < j; i++)
                            ^
        497.               r->d[i] = (~m->d[i]) & BN_MASK2;
        498.           r->top = j;

crypto/bn/bn_exp.c:401:1: <Length trace>
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_exp.c:401:1: Parameter `*m->d`
        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_exp.c:497:25: Array access: Offset: [1, +oo] Size: [0, 8388607] by call to `BN_is_prime_ex` 
        495.           r->d[0] = (0 - m->d[0]) & BN_MASK2;
        496.           for (i = 1; i < j; i++)
        497.               r->d[i] = (~m->d[i]) & BN_MASK2;
                                       ^
        498.           r->top = j;
        499.           /*
