crypto/srp/srp_lib.c:73: error: BUFFER_OVERRUN_L3
  Offset added: [8, +oo] Size: [0, 67108856] by call to `BN_mod_exp`.
Showing all 29 steps of the trace


crypto/srp/srp_lib.c:53:1: Parameter `N->top`
51.   }
52.   
53. > BIGNUM *SRP_Calc_server_key(const BIGNUM *A, const BIGNUM *v, const BIGNUM *u,
54.                               const BIGNUM *b, const BIGNUM *N)
55.   {

crypto/srp/srp_lib.c:67:10: Call
65.       /* S = (A*v**u) ** b */
66.   
67.       if (!BN_mod_exp(tmp, v, u, N, bn_ctx))
               ^
68.           goto err;
69.       if (!BN_mod_mul(tmp, A, tmp, N, bn_ctx))

crypto/bn/bn_exp.c:89:1: Parameter `m->top`
  87.   }
  88.   
  89. > int BN_mod_exp(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, const BIGNUM *m,
  90.                  BN_CTX *ctx)
  91.   {

crypto/bn/bn_exp.c:134:9: Call
  132.   
  133.   #ifdef MONT_MUL_MOD
  134.       if (BN_is_odd(m)) {
                 ^
  135.   # ifdef MONT_EXP_WORD
  136.           if (a->top == 1 && !a->neg

crypto/bn/bn_lib.c:829:1: Parameter `a->top`
    827.   }
    828.   
    829. > int BN_is_odd(const BIGNUM *a)
    830.   {
    831.       return (a->top > 0) && (a->d[0] & 1);

crypto/bn/bn_exp.c:141:19: Call
  139.               && (BN_get_flags(m, BN_FLG_CONSTTIME) == 0)) {
  140.               BN_ULONG A = a->d[0];
  141.               ret = BN_mod_exp_mont_word(r, A, p, m, ctx, NULL);
                           ^
  142.           } else
  143.   # endif

crypto/bn/bn_exp.c:1101:1: Parameter `m->top`
    1099.   }
    1100.   
    1101. > int BN_mod_exp_mont_word(BIGNUM *rr, BN_ULONG a, const BIGNUM *p,
    1102.                            const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *in_mont)
    1103.   {

crypto/srp/srp_lib.c:69:10: Call
67.       if (!BN_mod_exp(tmp, v, u, N, bn_ctx))
68.           goto err;
69.       if (!BN_mod_mul(tmp, A, tmp, N, bn_ctx))
               ^
70.           goto err;
71.   

crypto/bn/bn_mod.c:73:1: Parameter `m->top`
  71.   
  72.   /* slow but works */
  73. > int BN_mod_mul(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, const BIGNUM *m,
  74.                  BN_CTX *ctx)
  75.   {

crypto/srp/srp_lib.c:73:23: Call
71.   
72.       S = BN_new();
73.       if (S != NULL && !BN_mod_exp(S, tmp, b, N, bn_ctx)) {
                            ^
74.           BN_free(S);
75.           S = NULL;

crypto/bn/bn_exp.c:89:1: Parameter `m->top`
  87.   }
  88.   
  89. > int BN_mod_exp(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, const BIGNUM *m,
  90.                  BN_CTX *ctx)
  91.   {

crypto/bn/bn_exp.c:134:9: Call
  132.   
  133.   #ifdef MONT_MUL_MOD
  134.       if (BN_is_odd(m)) {
                 ^
  135.   # ifdef MONT_EXP_WORD
  136.           if (a->top == 1 && !a->neg

crypto/bn/bn_lib.c:829:1: Parameter `a->top`
    827.   }
    828.   
    829. > int BN_is_odd(const BIGNUM *a)
    830.   {
    831.       return (a->top > 0) && (a->d[0] & 1);

crypto/bn/bn_exp.c:141:19: Call
  139.               && (BN_get_flags(m, BN_FLG_CONSTTIME) == 0)) {
  140.               BN_ULONG A = a->d[0];
  141.               ret = BN_mod_exp_mont_word(r, A, p, m, ctx, NULL);
                           ^
  142.           } else
  143.   # endif

crypto/bn/bn_exp.c:1101:1: Parameter `m->top`
    1099.   }
    1100.   
    1101. > int BN_mod_exp_mont_word(BIGNUM *rr, BN_ULONG a, const BIGNUM *p,
    1102.                            const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *in_mont)
    1103.   {

crypto/bn/bn_exp.c:1137:10: Call
    1135.       bn_check_top(m);
    1136.   
    1137.       if (!BN_is_odd(m)) {
                     ^
    1138.           BNerr(BN_F_BN_MOD_EXP_MONT_WORD, BN_R_CALLED_WITH_EVEN_MODULUS);
    1139.           return 0;

crypto/bn/bn_lib.c:829:1: Parameter `a->top`
      827.   }
      828.   
      829. > int BN_is_odd(const BIGNUM *a)
      830.   {
      831.       return (a->top > 0) && (a->d[0] & 1);

crypto/bn/bn_exp.c:1172:14: Call
    1170.           if ((mont = BN_MONT_CTX_new()) == NULL)
    1171.               goto err;
    1172.           if (!BN_MONT_CTX_set(mont, m, ctx))
                         ^
    1173.               goto err;
    1174.       }

crypto/bn/bn_mont.c:230:1: Parameter `mod->top`
      228.   }
      229.   
      230. > int BN_MONT_CTX_set(BN_MONT_CTX *mont, const BIGNUM *mod, BN_CTX *ctx)
      231.   {
      232.       int ret = 0;

crypto/bn/bn_mont.c:235:9: Call
      233.       BIGNUM *Ri, *R;
      234.   
      235.       if (BN_is_zero(mod))
                     ^
      236.           return 0;
      237.   

crypto/bn/bn_lib.c:814:1: Parameter `a->top`
        812.   }
        813.   
        814. > int BN_is_zero(const BIGNUM *a)
        815.   {
        816.       return a->top == 0;

crypto/bn/bn_mont.c:242:10: Call
      240.           goto err;
      241.       R = &(mont->RR);            /* grab RR as a temp */
      242.       if (!BN_copy(&(mont->N), mod))
                      ^
      243.           goto err;               /* Set N */
      244.       if (BN_get_flags(mod, BN_FLG_CONSTTIME) != 0)

crypto/bn/bn_lib.c:285:1: <Offset trace>
283.   }
284.   
285. > BIGNUM *BN_copy(BIGNUM *a, const BIGNUM *b)
286.   {
287.       bn_check_top(b);

crypto/bn/bn_lib.c:285:1: Parameter `b->top`
        283.   }
        284.   
        285. > BIGNUM *BN_copy(BIGNUM *a, const BIGNUM *b)
        286.   {
        287.       bn_check_top(b);

crypto/bn/bn_lib.c:285:1: <Length trace>
283.   }
284.   
285. > BIGNUM *BN_copy(BIGNUM *a, const BIGNUM *b)
286.   {
287.       bn_check_top(b);

crypto/bn/bn_lib.c:285:1: Parameter `*a->d`
        283.   }
        284.   
        285. > BIGNUM *BN_copy(BIGNUM *a, const BIGNUM *b)
        286.   {
        287.       bn_check_top(b);

crypto/bn/bn_lib.c:291:9: Call
        289.       if (a == b)
        290.           return a;
        291.       if (bn_wexpand(a, b->top) == NULL)
                       ^
        292.           return NULL;
        293.   

crypto/bn/bn_lib.c:910:1: Parameter `*a->d`
          908.   }
          909.   
          910. > BIGNUM *bn_wexpand(BIGNUM *a, int words)
          911.   {
          912.       return (words <= a->dmax) ? a : bn_expand2(a, words);

crypto/bn/bn_lib.c:295:9: Array access: Offset added: [8, +oo] Size: [0, 67108856] by call to `BN_mod_exp` 
        293.   
        294.       if (b->top > 0)
        295.           memcpy(a->d, b->d, sizeof(b->d[0]) * b->top);
                       ^
        296.   
        297.       a->top = b->top;
