crypto/bn/bn_sqrt.c:98: error: INTEGER_OVERFLOW_L2
  ([0, 6+max(0, `ctx->stack.depth`)] - 1):unsigned32 by call to `BN_mod_exp`.
Showing all 37 steps of the trace


crypto/bn/bn_sqrt.c:13:1: Parameter `ctx->stack.depth`
11.   #include "bn_lcl.h"
12.   
13. > BIGNUM *BN_mod_sqrt(BIGNUM *in, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx)
14.   /*
15.    * Returns 'ret' such that ret^2 == a (mod p), using the Tonelli/Shanks

crypto/bn/bn_sqrt.c:59:5: Call
57.       }
58.   
59.       BN_CTX_start(ctx);
          ^
60.       A = BN_CTX_get(ctx);
61.       b = BN_CTX_get(ctx);

crypto/bn/bn_ctx.c:181:1: Parameter `ctx->stack.depth`
  179.   }
  180.   
  181. > void BN_CTX_start(BN_CTX *ctx)
  182.   {
  183.       CTXDBG_ENTRY("BN_CTX_start", ctx);

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:13:1: Parameter `ctx->stack.depth`
  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:140:1: Parameter `ctx->stack.depth`
    138.    * If 'dv' or 'rm' is NULL, the respective value is not returned.
    139.    */
    140. > int BN_div(BIGNUM *dv, BIGNUM *rm, const BIGNUM *num, const BIGNUM *divisor,
    141.              BN_CTX *ctx)
    142.   {

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->stack.depth`
  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:141:19: Call
  139.               && (BN_get_flags(m, BN_FLG_CONSTTIME) == 0)) {
  140.               BN_ULONG A = a->d[0];
  141.               ret = BN_mod_exp_mont_word(r, A, p, m, ctx, NULL);
                           ^
  142.           } else
  143.   # endif

crypto/bn/bn_exp.c:1095:1: Parameter `ctx->stack.depth`
    1093.   }
    1094.   
    1095. > int BN_mod_exp_mont_word(BIGNUM *rr, BN_ULONG a, const BIGNUM *p,
    1096.                            const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *in_mont)
    1097.   {

crypto/bn/bn_exp.c:1155:5: Call
    1153.       }
    1154.   
    1155.       BN_CTX_start(ctx);
                ^
    1156.       r = BN_CTX_get(ctx);
    1157.       t = BN_CTX_get(ctx);

crypto/bn/bn_ctx.c:181:1: Parameter `ctx->stack.depth`
      179.   }
      180.   
      181. > void BN_CTX_start(BN_CTX *ctx)
      182.   {
      183.       CTXDBG_ENTRY("BN_CTX_start", ctx);

crypto/bn/bn_exp.c:1166:14: Call
    1164.           if ((mont = BN_MONT_CTX_new()) == NULL)
    1165.               goto err;
    1166.           if (!BN_MONT_CTX_set(mont, m, ctx))
                         ^
    1167.               goto err;
    1168.       }

crypto/bn/bn_mont.c:247:1: Parameter `ctx->stack.depth`
      245.   }
      246.   
      247. > int BN_MONT_CTX_set(BN_MONT_CTX *mont, const BIGNUM *mod, BN_CTX *ctx)
      248.   {
      249.       int ret = 0;

crypto/bn/bn_mont.c:255:5: Call
      253.           return 0;
      254.   
      255.       BN_CTX_start(ctx);
                 ^
      256.       if ((Ri = BN_CTX_get(ctx)) == NULL)
      257.           goto err;

crypto/bn/bn_ctx.c:181:1: Parameter `ctx->stack.depth`
        179.   }
        180.   
        181. > void BN_CTX_start(BN_CTX *ctx)
        182.   {
        183.       CTXDBG_ENTRY("BN_CTX_start", ctx);

crypto/bn/bn_mont.c:329:14: Call
      327.           tmod.top = buf[0] != 0 ? 1 : 0;
      328.           /* Ri = R^-1 mod N */
      329.           if ((BN_mod_inverse(Ri, R, &tmod, ctx)) == NULL)
                          ^
      330.               goto err;
      331.           if (!BN_lshift(Ri, Ri, BN_BITS2))

crypto/bn/bn_gcd.c:124:1: Parameter `ctx->stack.depth`
        122.                                           BN_CTX *ctx);
        123.   
        124. > BIGNUM *BN_mod_inverse(BIGNUM *in,
        125.                          const BIGNUM *a, const BIGNUM *n, BN_CTX *ctx)
        126.   {

crypto/bn/bn_gcd.c:129:10: Call
        127.       BIGNUM *rv;
        128.       int noinv;
        129.       rv = int_bn_mod_inverse(in, a, n, ctx, &noinv);
                        ^
        130.       if (noinv)
        131.           BNerr(BN_F_BN_MOD_INVERSE, BN_R_NO_INVERSE);

crypto/bn/bn_gcd.c:135:1: Parameter `ctx->stack.depth`
          133.   }
          134.   
          135. > BIGNUM *int_bn_mod_inverse(BIGNUM *in,
          136.                              const BIGNUM *a, const BIGNUM *n, BN_CTX *ctx,
          137.                              int *pnoinv)

crypto/bn/bn_gcd.c:148:16: Call
          146.       if ((BN_get_flags(a, BN_FLG_CONSTTIME) != 0)
          147.           || (BN_get_flags(n, BN_FLG_CONSTTIME) != 0)) {
          148.           return BN_mod_inverse_no_branch(in, a, n, ctx);
                                ^
          149.       }
          150.   

crypto/bn/bn_gcd.c:451:1: Parameter `ctx->stack.depth`
            449.    * not contain branches that may leak sensitive information.
            450.    */
            451. > static BIGNUM *BN_mod_inverse_no_branch(BIGNUM *in,
            452.                                           const BIGNUM *a, const BIGNUM *n,
            453.                                           BN_CTX *ctx)

crypto/bn/bn_gcd.c:462:5: Call
            460.       bn_check_top(n);
            461.   
            462.       BN_CTX_start(ctx);
                       ^
            463.       A = BN_CTX_get(ctx);
            464.       B = BN_CTX_get(ctx);

crypto/bn/bn_ctx.c:181:1: Parameter `ctx->stack.depth`
              179.   }
              180.   
              181. > void BN_CTX_start(BN_CTX *ctx)
              182.   {
              183.       CTXDBG_ENTRY("BN_CTX_start", ctx);

crypto/bn/bn_gcd.c:497:18: Call
            495.               bn_init(&local_B);
            496.               BN_with_flags(&local_B, B, BN_FLG_CONSTTIME);
            497.               if (!BN_nnmod(B, &local_B, A, ctx))
                                    ^
            498.                   goto err;
            499.               /* Ensure local_B goes out of scope before any further use of B */

crypto/bn/bn_mod.c:13:1: Parameter `ctx->stack.depth`
              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:140:1: Parameter `ctx->stack.depth`
                138.    * If 'dv' or 'rm' is NULL, the respective value is not returned.
                139.    */
                140. > int BN_div(BIGNUM *dv, BIGNUM *rm, const BIGNUM *num, const BIGNUM *divisor,
                141.              BN_CTX *ctx)
                142.   {

crypto/bn/bn_div.c:193:5: Call
                191.       }
                192.   
                193.       BN_CTX_start(ctx);
                           ^
                194.       res = (dv == NULL) ? BN_CTX_get(ctx) : dv;
                195.       tmp = BN_CTX_get(ctx);

crypto/bn/bn_ctx.c:181:1: Parameter `ctx->stack.depth`
                  179.   }
                  180.   
                  181. > void BN_CTX_start(BN_CTX *ctx)
                  182.   {
                  183.       CTXDBG_ENTRY("BN_CTX_start", ctx);

crypto/bn/bn_div.c:413:5: Call
                411.       if (no_branch)
                412.           bn_correct_top(res);
                413.       BN_CTX_end(ctx);
                           ^
                414.       return 1;
                415.    err:

crypto/bn/bn_ctx.c:195:1: Parameter `ctx->stack.depth`
                  193.   }
                  194.   
                  195. > void BN_CTX_end(BN_CTX *ctx)
                  196.   {
                  197.       CTXDBG_ENTRY("BN_CTX_end", ctx);

crypto/bn/bn_ctx.c:201:27: Call
                  199.           ctx->err_stack--;
                  200.       else {
                  201.           unsigned int fp = BN_STACK_pop(&ctx->stack);
                                                   ^
                  202.           /* Does this stack frame have anything to release? */
                  203.           if (fp < ctx->used)

crypto/bn/bn_ctx.c:271:1: <LHS trace>
269.   }
270.   
271. > static unsigned int BN_STACK_pop(BN_STACK *st)
272.   {
273.       return st->indexes[--(st->depth)];

crypto/bn/bn_ctx.c:271:1: Parameter `st->depth`
                    269.   }
                    270.   
                    271. > static unsigned int BN_STACK_pop(BN_STACK *st)
                    272.   {
                    273.       return st->indexes[--(st->depth)];

crypto/bn/bn_ctx.c:273:12: Binary operation: ([0, 6+max(0, ctx->stack.depth)] - 1):unsigned32 by call to `BN_mod_exp` 
                    271.   static unsigned int BN_STACK_pop(BN_STACK *st)
                    272.   {
                    273.       return st->indexes[--(st->depth)];
                                      ^
                    274.   }
                    275.   
