apps/s_client.c:241: error: BUFFER_OVERRUN_L3
  Offset added: [8, +oo] Size: [0, +oo] by call to `BN_is_prime_ex`.
Showing all 19 steps of the trace


apps/s_client.c:238:9: Call
236.       int ret =
237.           g != NULL && N != NULL && bn_ctx != NULL && BN_is_odd(N) &&
238.           BN_is_prime_ex(N, SRP_NUMBER_ITERATIONS_FOR_PRIME, bn_ctx, NULL) == 1 &&
               ^
239.           p != NULL && BN_rshift1(p, N) &&
240.           /* p = (N-1)/2 */

crypto/bn/bn_prime.c:150:12: Call
  148.                      BN_GENCB *cb)
  149.   {
  150.       return BN_is_prime_fasttest_ex(a, checks, ctx_passed, 0, cb);
                    ^
  151.   }
  152.   

crypto/bn/bn_prime.c:239:13: Call
    237.           /* now 1 <= check < A */
    238.   
    239.           j = witness(check, A, A1, A1_odd, k, ctx, mont);
                       ^
    240.           if (j == -1)
    241.               goto err;

crypto/bn/bn_prime.c:265:10: Call
      263.                      BN_MONT_CTX *mont)
      264.   {
      265.       if (!BN_mod_exp_mont(w, w, a1_odd, a, ctx, mont)) /* w := w^a1_odd mod a */
                      ^
      266.           return -1;
      267.       if (BN_is_one(w))

crypto/bn/bn_exp.c:350:14: Call
        348.   
        349.       if (a->neg || BN_ucmp(a, m) >= 0) {
        350.           if (!BN_nnmod(val[0], a, m, ctx))
                            ^
        351.               goto err;
        352.           aa = val[0];

crypto/bn/bn_mod.c:20:11: Call
          18.        */
          19.   
          20.       if (!(BN_mod(r, m, d, ctx)))
                          ^
          21.           return 0;
          22.       if (!r->neg)

crypto/bn/bn_div.c:140:1: Parameter `*dv->d`
            138.    * If 'dv' or 'rm' is NULL, the respective value is not returned.
            139.    */
            140. > int BN_div(BIGNUM *dv, BIGNUM *rm, const BIGNUM *num, const BIGNUM *divisor,
            141.              BN_CTX *ctx)
            142.   {

apps/s_client.c:239:22: Call
237.           g != NULL && N != NULL && bn_ctx != NULL && BN_is_odd(N) &&
238.           BN_is_prime_ex(N, SRP_NUMBER_ITERATIONS_FOR_PRIME, bn_ctx, NULL) == 1 &&
239.           p != NULL && BN_rshift1(p, N) &&
                            ^
240.           /* p = (N-1)/2 */
241.           BN_is_prime_ex(p, SRP_NUMBER_ITERATIONS_FOR_PRIME, bn_ctx, NULL) == 1 &&

crypto/bn/bn_shift.c:46:1: Parameter `*r->d`
  44.   }
  45.   
  46. > int BN_rshift1(BIGNUM *r, const BIGNUM *a)
  47.   {
  48.       BN_ULONG *ap, *rp, t, c;

apps/s_client.c:241:9: Call
239.           p != NULL && BN_rshift1(p, N) &&
240.           /* p = (N-1)/2 */
241.           BN_is_prime_ex(p, SRP_NUMBER_ITERATIONS_FOR_PRIME, bn_ctx, NULL) == 1 &&
               ^
242.           r != NULL &&
243.           /* verify g^((N-1)/2) == -1 (mod N) */

crypto/bn/bn_prime.c:147:1: Parameter `*a->d`
  145.   }
  146.   
  147. > int BN_is_prime_ex(const BIGNUM *a, int checks, BN_CTX *ctx_passed,
  148.                      BN_GENCB *cb)
  149.   {

crypto/bn/bn_prime.c:150:12: Call
  148.                      BN_GENCB *cb)
  149.   {
  150.       return BN_is_prime_fasttest_ex(a, checks, ctx_passed, 0, cb);
                    ^
  151.   }
  152.   

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

crypto/bn/bn_prime.c:209:10: Call
    207.   
    208.       /* compute A1 := A - 1 */
    209.       if (!BN_copy(A1, A))
                    ^
    210.           goto err;
    211.       if (!BN_sub_word(A1, 1))

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 `*b->d`
      321.   }
      322.   
      323. > BIGNUM *BN_copy(BIGNUM *a, const BIGNUM *b)
      324.   {
      325.       bn_check_top(b);

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