crypto/rsa/rsa_ossl.c:819: error: BUFFER_OVERRUN_L3
  Offset: [1, +oo] Size: [0, 8388607] by call to `BN_div`.
Showing all 17 steps of the trace


crypto/rsa/rsa_ossl.c:701:14: Call
699.           BN_with_flags(c, I, BN_FLG_CONSTTIME);
700.   
701.           if (!BN_mod(r1, c, rsa->q, ctx)) {
                    ^
702.               BN_free(c);
703.               goto err;

crypto/bn/bn_div.c:188:1: Parameter `*dv->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:303:10: Call
  301.   
  302.       /* Setup to 'res' */
  303.       if (!bn_wexpand(res, (loop + 1)))
                  ^
  304.           goto err;
  305.       res->neg = (num->neg ^ divisor->neg);

crypto/bn/bn_lib.c:939:1: Parameter `*a->d`
    937.   }
    938.   
    939. > BIGNUM *bn_wexpand(BIGNUM *a, int words)
    940.   {
    941.       return (words <= a->dmax) ? a : bn_expand2(a, words);

crypto/rsa/rsa_ossl.c:817:9: Call
815.           if (pr1 == NULL)
816.               goto err;
817.           BN_with_flags(pr1, r1, BN_FLG_CONSTTIME);
               ^
818.   
819.           if (!BN_mod(r0, pr1, rsa->p, ctx)) {

crypto/bn/bn_lib.c:874:1: Parameter `*b->d`
  872.   }
  873.   
  874. > void BN_with_flags(BIGNUM *dest, const BIGNUM *b, int flags)
  875.   {
  876.       dest->d = b->d;

crypto/bn/bn_lib.c:876:5: Assignment
  874.   void BN_with_flags(BIGNUM *dest, const BIGNUM *b, int flags)
  875.   {
  876.       dest->d = b->d;
             ^
  877.       dest->top = b->top;
  878.       dest->dmax = b->dmax;

crypto/rsa/rsa_ossl.c:819:14: Call
817.           BN_with_flags(pr1, r1, BN_FLG_CONSTTIME);
818.   
819.           if (!BN_mod(r0, pr1, rsa->p, ctx)) {
                    ^
820.               BN_free(pr1);
821.               goto err;

crypto/bn/bn_div.c:188:1: Parameter `*dv->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:303:10: Call
  301.   
  302.       /* Setup to 'res' */
  303.       if (!bn_wexpand(res, (loop + 1)))
                  ^
  304.           goto err;
  305.       res->neg = (num->neg ^ divisor->neg);

crypto/bn/bn_lib.c:939:1: Parameter `*a->d`
    937.   }
    938.   
    939. > BIGNUM *bn_wexpand(BIGNUM *a, int words)
    940.   {
    941.       return (words <= a->dmax) ? a : bn_expand2(a, words);

crypto/bn/bn_div.c:456:9: Call
  454.            */
  455.           int neg = num->neg;
  456.           BN_rshift(rm, snum, norm_shift);
                 ^
  457.           if (!BN_is_zero(rm))
  458.               rm->neg = neg;

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` 
    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.           }
