test/bntest.c:216: 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:215:9: Call
213.           a->neg = rand_neg();
214.           b->neg = rand_neg();
215.           BN_RECP_CTX_set(recp, b, ctx);
               ^
216.           BN_div_recp(d, c, a, recp, ctx);
217.           BN_mul(e, d, b, ctx);

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:216:9: Call
214.           b->neg = rand_neg();
215.           BN_RECP_CTX_set(recp, b, ctx);
216.           BN_div_recp(d, c, a, recp, ctx);
               ^
217.           BN_mul(e, d, b, ctx);
218.           BN_add(d, e, c);

crypto/bn/bn_recp.c:90:29: Call
  88.   
  89.       BN_CTX_start(ctx);
  90.       d = (dv != NULL) ? dv : BN_CTX_get(ctx);
                                    ^
  91.       r = (rem != NULL) ? rem : BN_CTX_get(ctx);
  92.       a = BN_CTX_get(ctx);

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:387:1: Parameter `*a->d`
      385.   }
      386.   
      387. > int BN_set_word(BIGNUM *a, BN_ULONG w)
      388.   {
      389.       bn_check_top(a);

crypto/bn/bn_lib.c:390:9: Call
      388.   {
      389.       bn_check_top(a);
      390.       if (bn_expand(a, (int)sizeof(BN_ULONG) * 8) == NULL)
                     ^
      391.           return 0;
      392.       a->neg = 0;

crypto/bn/bn_lcl.h:651:1: Parameter `*a->d`
        649.                            const BIGNUM *add, const BIGNUM *rem, BN_CTX *ctx);
        650.   
        651. > static ossl_inline BIGNUM *bn_expand(BIGNUM *a, int bits)
        652.   {
        653.       if (bits > (INT_MAX - BN_BITS2 + 1))

crypto/bn/bn_recp.c:135:10: Call
  133.       if (!BN_mul(b, a, &(recp->Nr), ctx))
  134.           goto err;
  135.       if (!BN_rshift(d, b, i - recp->num_bits))
                  ^
  136.           goto err;
  137.       d->neg = 0;

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

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

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

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

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