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


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

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;

crypto/rsa/rsa_chk.c:158:13: Call
156.       if (key->dmp1 != NULL && key->dmq1 != NULL && key->iqmp != NULL) {
157.           /* dmp1 = d mod (p-1)? */
158.           r = BN_sub(i, key->p, BN_value_one());
                   ^
159.           if (!r) {
160.               ret = -1;

crypto/bn/bn_add.c:234:1: Parameter `*r->d`
  232.   }
  233.   
  234. > int BN_sub(BIGNUM *r, const BIGNUM *a, const BIGNUM *b)
  235.   {
  236.       int max;

crypto/bn/bn_add.c:266:14: Call
  264.   
  265.       if (add) {
  266.           if (!BN_uadd(r, a, b))
                      ^
  267.               return (0);
  268.           r->neg = neg;

crypto/bn/bn_add.c:106:1: Parameter `*r->d`
    104.   
    105.   /* unsigned add of b to a */
    106. > int BN_uadd(BIGNUM *r, const BIGNUM *a, const BIGNUM *b)
    107.   {
    108.       int max, min, dif;

crypto/bn/bn_add.c:125:9: Call
    123.       dif = max - min;
    124.   
    125.       if (bn_wexpand(r, max + 1) == NULL)
                   ^
    126.           return 0;
    127.   

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

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

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

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

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

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

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

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