crypto/rsa/rsa_chk.c:163: error: BUFFER_OVERRUN_L3
  Offset: [3, +oo] (⇐ [0, +oo] + 3) Size: [0, 8388607] by call to `BN_div`.
Showing all 25 steps of the trace


crypto/rsa/rsa_chk.c:85:9: Call
83.   
84.       /* p prime? */
85.       r = BN_is_prime_ex(key->p, BN_prime_checks, NULL, cb);
              ^
86.       if (r != 1) {
87.           ret = r;

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

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

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

crypto/bn/bn_ctx.c:283:5: Call
        281.       }
        282.       /* OK, make sure the returned bignum is "zero" */
        283.       BN_zero(ret);
                   ^
        284.       ctx->used++;
        285.       CTXDBG_RET(ctx, ret);

crypto/bn/bn_lib.c:529:1: Parameter `*a->d`
          527.   }
          528.   
          529. > int BN_set_word(BIGNUM *a, BN_ULONG w)
          530.   {
          531.       bn_check_top(a);

crypto/bn/bn_mont.c:427:14: Call
      425.           tmod.top = buf[0] != 0 ? 1 : 0;
      426.           /* Ri = R^-1 mod N */
      427.           if ((BN_mod_inverse(Ri, R, &tmod, ctx)) == NULL)
                          ^
      428.               goto err;
      429.           if (!BN_lshift(Ri, Ri, BN_BITS2))

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

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

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

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

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

crypto/rsa/rsa_chk.c:163:13: Call
161.           }
162.   
163.           r = BN_mod(j, key->d, i, ctx);
                   ^
164.           if (!r) {
165.               ret = -1;

crypto/bn/bn_div.c:188:1: Parameter `*rm->d`
  186.    * If 'dv' or 'rm' is NULL, the respective value is not returned.
  187.    */
  188. > int BN_div(BIGNUM *dv, BIGNUM *rm, const BIGNUM *num, const BIGNUM *divisor,
  189.              BN_CTX *ctx)
  190.   {

crypto/bn/bn_div.c:233:17: Call
  231.       if (!no_branch && BN_ucmp(num, divisor) < 0) {
  232.           if (rm != NULL) {
  233.               if (BN_copy(rm, num) == NULL)
                         ^
  234.                   return (0);
  235.           }

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

crypto/bn/bn_lib.c:438:9: Call
    436.       if (a == b)
    437.           return (a);
    438.       if (bn_wexpand(a, b->top) == NULL)
                   ^
    439.           return (NULL);
    440.   

crypto/bn/bn_lib.c:994:1: Parameter `*a->d`
      992.   }
      993.   
      994. > BIGNUM *bn_wexpand(BIGNUM *a, int words)
      995.   {
      996.       return (words <= a->dmax) ? a : bn_expand2(a, words);

crypto/bn/bn_lib.c:996:37: Call
      994.   BIGNUM *bn_wexpand(BIGNUM *a, int words)
      995.   {
      996.       return (words <= a->dmax) ? a : bn_expand2(a, words);
                                                 ^
      997.   }
      998.   

crypto/bn/bn_lib.c:389:1: Parameter `*b->d`
        387.    */
        388.   
        389. > BIGNUM *bn_expand2(BIGNUM *b, int words)
        390.   {
        391.       bn_check_top(b);

crypto/bn/bn_lib.c:394:23: Call
        392.   
        393.       if (words > b->dmax) {
        394.           BN_ULONG *a = bn_expand_internal(b, words);
                                     ^
        395.           if (!a)
        396.               return NULL;

crypto/bn/bn_lib.c:299:1: <Length trace>
297.   /* This is used by bn_expand2() */
298.   /* The caller MUST check that words > b->dmax before calling this */
299. > static BN_ULONG *bn_expand_internal(const BIGNUM *b, int words)
300.   {
301.       BN_ULONG *A, *a = NULL;

crypto/bn/bn_lib.c:299:1: Parameter `*b->d`
          297.   /* This is used by bn_expand2() */
          298.   /* The caller MUST check that words > b->dmax before calling this */
          299. > static BN_ULONG *bn_expand_internal(const BIGNUM *b, int words)
          300.   {
          301.       BN_ULONG *A, *a = NULL;

crypto/bn/bn_lib.c:334:5: Assignment
          332.   
          333.   #if 1
          334.       B = b->d;
                     ^
          335.       /* Check if the previous number needs to be copied */
          336.       if (B != NULL) {

crypto/bn/bn_lib.c:351:18: Array access: Offset: [3, +oo] (⇐ [0, +oo] + 3) Size: [0, 8388607] by call to `BN_div` 
          349.               a1 = B[1];
          350.               a2 = B[2];
          351.               a3 = B[3];
                                  ^
          352.               A[0] = a0;
          353.               A[1] = a1;
