crypto/bn/bn_sqrt.c:98: error: INTEGER_OVERFLOW_L2
  ([0, +oo] - 1):unsigned32 by call to `BN_mod_exp`.
Showing all 29 steps of the trace


crypto/bn/bn_sqrt.c:75:10: Call
73.   
74.       /* A = a mod p */
75.       if (!BN_nnmod(A, a, p, ctx))
               ^
76.           goto end;
77.   

crypto/bn/bn_mod.c:20:11: Call
  18.        */
  19.   
  20.       if (!(BN_mod(r, m, d, ctx)))
                  ^
  21.           return 0;
  22.       if (!r->neg)

crypto/bn/bn_div.c:209:1: Parameter `ctx->pool.used`
    207.    * If 'dv' or 'rm' is NULL, the respective value is not returned.
    208.    */
    209. > int BN_div(BIGNUM *dv, BIGNUM *rm, const BIGNUM *num, const BIGNUM *divisor,
    210.              BN_CTX *ctx)
    211.   {

crypto/bn/bn_sqrt.c:98:14: Call
96.           if (!BN_add_word(q, 1))
97.               goto end;
98.           if (!BN_mod_exp(ret, A, q, p, ctx))
                    ^
99.               goto end;
100.           err = 0;

crypto/bn/bn_exp.c:89:1: Parameter `ctx->pool.used`
  87.   }
  88.   
  89. > int BN_mod_exp(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, const BIGNUM *m,
  90.                  BN_CTX *ctx)
  91.   {

crypto/bn/bn_exp.c:149:15: Call
  147.   #ifdef RECP_MUL_MOD
  148.       {
  149.           ret = BN_mod_exp_recp(r, a, p, m, ctx);
                       ^
  150.       }
  151.   #else

crypto/bn/bn_exp.c:161:1: Parameter `ctx->pool.used`
    159.   }
    160.   
    161. > int BN_mod_exp_recp(BIGNUM *r, const BIGNUM *a, const BIGNUM *p,
    162.                       const BIGNUM *m, BN_CTX *ctx)
    163.   {

crypto/bn/bn_exp.c:192:10: Call
    190.   
    191.       BN_CTX_start(ctx);
    192.       aa = BN_CTX_get(ctx);
                    ^
    193.       val[0] = BN_CTX_get(ctx);
    194.       if (val[0] == NULL)

crypto/bn/bn_ctx.c:221:1: Parameter `ctx->pool.used`
      219.   }
      220.   
      221. > BIGNUM *BN_CTX_get(BN_CTX *ctx)
      222.   {
      223.       BIGNUM *ret;

crypto/bn/bn_exp.c:193:14: Call
    191.       BN_CTX_start(ctx);
    192.       aa = BN_CTX_get(ctx);
    193.       val[0] = BN_CTX_get(ctx);
                        ^
    194.       if (val[0] == NULL)
    195.           goto err;

crypto/bn/bn_ctx.c:221:1: Parameter `ctx->pool.used`
      219.   }
      220.   
      221. > BIGNUM *BN_CTX_get(BN_CTX *ctx)
      222.   {
      223.       BIGNUM *ret;

crypto/bn/bn_exp.c:210:10: Call
    208.       }
    209.   
    210.       if (!BN_nnmod(val[0], a, m, ctx))
                    ^
    211.           goto err;               /* 1 */
    212.       if (BN_is_zero(val[0])) {

crypto/bn/bn_mod.c:13:1: Parameter `ctx->pool.used`
      11.   #include "bn_lcl.h"
      12.   
      13. > int BN_nnmod(BIGNUM *r, const BIGNUM *m, const BIGNUM *d, BN_CTX *ctx)
      14.   {
      15.       /*

crypto/bn/bn_mod.c:20:11: Call
      18.        */
      19.   
      20.       if (!(BN_mod(r, m, d, ctx)))
                      ^
      21.           return 0;
      22.       if (!r->neg)

crypto/bn/bn_div.c:209:1: Parameter `ctx->pool.used`
        207.    * If 'dv' or 'rm' is NULL, the respective value is not returned.
        208.    */
        209. > int BN_div(BIGNUM *dv, BIGNUM *rm, const BIGNUM *num, const BIGNUM *divisor,
        210.              BN_CTX *ctx)
        211.   {

crypto/bn/bn_div.c:229:11: Call
        227.       }
        228.   
        229.       ret = bn_div_fixed_top(dv, rm, num, divisor, ctx);
                         ^
        230.   
        231.       if (ret) {

crypto/bn/bn_div.c:264:1: Parameter `ctx->pool.used`
          262.    *       divisor's length is considered public;
          263.    */
          264. > int bn_div_fixed_top(BIGNUM *dv, BIGNUM *rm, const BIGNUM *num,
          265.                        const BIGNUM *divisor, BN_CTX *ctx)
          266.   {

crypto/bn/bn_div.c:282:11: Call
          280.       BN_CTX_start(ctx);
          281.       res = (dv == NULL) ? BN_CTX_get(ctx) : dv;
          282.       tmp = BN_CTX_get(ctx);
                           ^
          283.       snum = BN_CTX_get(ctx);
          284.       sdiv = BN_CTX_get(ctx);

crypto/bn/bn_ctx.c:221:1: Parameter `ctx->pool.used`
            219.   }
            220.   
            221. > BIGNUM *BN_CTX_get(BN_CTX *ctx)
            222.   {
            223.       BIGNUM *ret;

crypto/bn/bn_div.c:283:12: Call
          281.       res = (dv == NULL) ? BN_CTX_get(ctx) : dv;
          282.       tmp = BN_CTX_get(ctx);
          283.       snum = BN_CTX_get(ctx);
                            ^
          284.       sdiv = BN_CTX_get(ctx);
          285.       if (sdiv == NULL)

crypto/bn/bn_ctx.c:221:1: Parameter `ctx->pool.used`
            219.   }
            220.   
            221. > BIGNUM *BN_CTX_get(BN_CTX *ctx)
            222.   {
            223.       BIGNUM *ret;

crypto/bn/bn_div.c:284:12: Call
          282.       tmp = BN_CTX_get(ctx);
          283.       snum = BN_CTX_get(ctx);
          284.       sdiv = BN_CTX_get(ctx);
                            ^
          285.       if (sdiv == NULL)
          286.           goto err;

crypto/bn/bn_ctx.c:221:1: Parameter `ctx->pool.used`
            219.   }
            220.   
            221. > BIGNUM *BN_CTX_get(BN_CTX *ctx)
            222.   {
            223.       BIGNUM *ret;

crypto/bn/bn_div.c:450:5: Call
          448.       if (rm != NULL)
          449.           bn_rshift_fixed_top(rm, snum, norm_shift);
          450.       BN_CTX_end(ctx);
                     ^
          451.       return 1;
          452.    err:

crypto/bn/bn_ctx.c:202:1: Parameter `ctx->pool.used`
            200.   }
            201.   
            202. > void BN_CTX_end(BN_CTX *ctx)
            203.   {
            204.       if (ctx == NULL)

crypto/bn/bn_ctx.c:213:13: Call
            211.           /* Does this stack frame have anything to release? */
            212.           if (fp < ctx->used)
            213.               BN_POOL_release(&ctx->pool, ctx->used - fp);
                               ^
            214.           ctx->used = fp;
            215.           /* Unjam "too_many" in case "get" had failed */

crypto/bn/bn_ctx.c:362:1: <LHS trace>
360.   }
361.   
362. > static void BN_POOL_release(BN_POOL *p, unsigned int num)
363.   {
364.       unsigned int offset = (p->used - 1) % BN_CTX_POOL_SIZE;

crypto/bn/bn_ctx.c:362:1: Parameter `p->used`
              360.   }
              361.   
              362. > static void BN_POOL_release(BN_POOL *p, unsigned int num)
              363.   {
              364.       unsigned int offset = (p->used - 1) % BN_CTX_POOL_SIZE;

crypto/bn/bn_ctx.c:364:5: Binary operation: ([0, +oo] - 1):unsigned32 by call to `BN_mod_exp` 
              362.   static void BN_POOL_release(BN_POOL *p, unsigned int num)
              363.   {
              364.       unsigned int offset = (p->used - 1) % BN_CTX_POOL_SIZE;
                         ^
              365.   
              366.       p->used -= num;
