test/bntest.c:591: error: BUFFER_OVERRUN_L3
  Offset: [1, +oo] Size: [0, 8388607] by call to `BN_div_recp`.
Showing all 14 steps of the trace


test/bntest.c:590:9: Call
588.           a->neg = rand_neg();
589.           b->neg = rand_neg();
590.           BN_RECP_CTX_set(recp, b, ctx);
               ^
591.           BN_div_recp(d, c, a, recp, ctx);
592.           if (bp != NULL) {

crypto/bn/bn_recp.c:44:1: Parameter `*recp->Nr.d`
  42.   }
  43.   
  44. > int BN_RECP_CTX_set(BN_RECP_CTX *recp, const BIGNUM *d, BN_CTX *ctx)
  45.   {
  46.       if (!BN_copy(&(recp->N), d))

test/bntest.c:591:9: Call
589.           b->neg = rand_neg();
590.           BN_RECP_CTX_set(recp, b, ctx);
591.           BN_div_recp(d, c, a, recp, ctx);
               ^
592.           if (bp != NULL) {
593.               if (!results) {

crypto/bn/bn_recp.c:90:9: Call
  88.   
  89.       BN_CTX_start(ctx);
  90.       a = BN_CTX_get(ctx);
                ^
  91.       b = BN_CTX_get(ctx);
  92.       if (dv != NULL)

crypto/bn/bn_ctx.c:229:5: Call
    227.       }
    228.       /* OK, make sure the returned bignum is "zero" */
    229.       BN_zero(ret);
               ^
    230.       ctx->used++;
    231.       CTXDBG_RET(ctx, ret);

crypto/bn/bn_lib.c:463:1: Parameter `*a->d`
      461.   }
      462.   
      463. > int BN_set_word(BIGNUM *a, BN_ULONG w)
      464.   {
      465.       bn_check_top(a);

crypto/bn/bn_lib.c:466:9: Call
      464.   {
      465.       bn_check_top(a);
      466.       if (bn_expand(a, (int)sizeof(BN_ULONG) * 8) == NULL)
                     ^
      467.           return (0);
      468.       a->neg = 0;

crypto/bn/bn_lcl.h:676:1: Parameter `*a->d`
        674.   int bn_probable_prime_dh_coprime(BIGNUM *rnd, int bits, BN_CTX *ctx);
        675.   
        676. > static ossl_inline BIGNUM *bn_expand(BIGNUM *a, int bits)
        677.   {
        678.       if (bits > (INT_MAX - BN_BITS2 + 1))

crypto/bn/bn_recp.c:141:10: Call
  139.       if (!BN_mul(b, a, &(recp->Nr), ctx))
  140.           goto err;
  141.       if (!BN_rshift(d, b, i - recp->num_bits))
                  ^
  142.           goto err;
  143.       d->neg = 0;

crypto/bn/bn_shift.c:120:1: <Length trace>
118.   }
119.   
120. > int BN_rshift(BIGNUM *r, const BIGNUM *a, int n)
121.   {
122.       int i, j, nw, lb, rb;

crypto/bn/bn_shift.c:120:1: Parameter `*a->d`
    118.   }
    119.   
    120. > int BN_rshift(BIGNUM *r, const BIGNUM *a, int n)
    121.   {
    122.       int i, j, nw, lb, rb;

crypto/bn/bn_shift.c:151:5: Assignment
    149.       }
    150.   
    151.       f = &(a->d[nw]);
               ^
    152.       t = r->d;
    153.       j = a->top - nw;

crypto/bn/bn_shift.c:160:15: Assignment
    158.               *(t++) = *(f++);
    159.       } else {
    160.           l = *(f++);
                         ^
    161.           for (i = j - 1; i != 0; i--) {
    162.               tmp = (l >> rb) & BN_MASK2;

crypto/bn/bn_shift.c:163:17: Array access: Offset: [1, +oo] Size: [0, 8388607] by call to `BN_div_recp` 
    161.           for (i = j - 1; i != 0; i--) {
    162.               tmp = (l >> rb) & BN_MASK2;
    163.               l = *(f++);
                           ^
    164.               *(t++) = (tmp | (l << lb)) & BN_MASK2;
    165.           }
