crypto/rsa/rsa_x931g.c:159: error: BUFFER_OVERRUN_L3
  Offset: 0 Size: [0, 8388607] by call to `BN_X931_generate_Xpq`.
Showing all 17 steps of the trace


crypto/rsa/rsa_x931g.c:155:10: Call
153.   
154.       BN_CTX_start(ctx);
155.       Xp = BN_CTX_get(ctx);
                ^
156.       Xq = BN_CTX_get(ctx);
157.       if (Xq == 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:398:1: Parameter `*a->d`
    396.   }
    397.   
    398. > int BN_set_word(BIGNUM *a, BN_ULONG w)
    399.   {
    400.       bn_check_top(a);

crypto/bn/bn_lib.c:401:9: Call
    399.   {
    400.       bn_check_top(a);
    401.       if (bn_expand(a, (int)sizeof(BN_ULONG) * 8) == NULL)
                   ^
    402.           return (0);
    403.       a->neg = 0;

crypto/bn/bn_lcl.h:658:1: Parameter `*a->d`
      656.                            const BIGNUM *add, const BIGNUM *rem, BN_CTX *ctx);
      657.   
      658. > static ossl_inline BIGNUM *bn_expand(BIGNUM *a, int bits)
      659.   {
      660.       if (bits > (INT_MAX - BN_BITS2 + 1))

crypto/rsa/rsa_x931g.c:159:10: Call
157.       if (Xq == NULL)
158.           goto error;
159.       if (!BN_X931_generate_Xpq(Xp, Xq, bits, ctx))
                ^
160.           goto error;
161.   

crypto/bn/bn_x931p.c:160:1: Parameter `*Xp->d`
  158.    */
  159.   
  160. > int BN_X931_generate_Xpq(BIGNUM *Xp, BIGNUM *Xq, int nbits, BN_CTX *ctx)
  161.   {
  162.       BIGNUM *t;

crypto/bn/bn_x931p.c:176:10: Call
  174.        * exceeded.
  175.        */
  176.       if (!BN_priv_rand(Xp, nbits, BN_RAND_TOP_TWO, BN_RAND_BOTTOM_ANY))
                  ^
  177.           goto err;
  178.   

crypto/bn/bn_rand.c:107:1: Parameter `*rnd->d`
    105.   }
    106.   
    107. > int BN_priv_rand(BIGNUM *rnd, int bits, int top, int bottom)
    108.   {
    109.       return bnrand(PRIVATE, rnd, bits, top, bottom);

crypto/bn/bn_rand.c:109:12: Call
    107.   int BN_priv_rand(BIGNUM *rnd, int bits, int top, int bottom)
    108.   {
    109.       return bnrand(PRIVATE, rnd, bits, top, bottom);
                      ^
    110.   }
    111.   

crypto/bn/bn_rand.c:21:1: Parameter `*rnd->d`
      19.   } BNRAND_FLAG;
      20.   
      21. > static int bnrand(BNRAND_FLAG flag, BIGNUM *rnd, int bits, int top, int bottom)
      22.   {
      23.       unsigned char *buf = NULL;

crypto/bn/bn_rand.c:29:9: Call
      27.           if (top != BN_RAND_TOP_ANY || bottom != BN_RAND_BOTTOM_ANY)
      28.               goto toosmall;
      29.           BN_zero(rnd);
                    ^
      30.           return 1;
      31.       }

crypto/bn/bn_lib.c:398:1: <Length trace>
396.   }
397.   
398. > int BN_set_word(BIGNUM *a, BN_ULONG w)
399.   {
400.       bn_check_top(a);

crypto/bn/bn_lib.c:398:1: Parameter `*a->d`
        396.   }
        397.   
        398. > int BN_set_word(BIGNUM *a, BN_ULONG w)
        399.   {
        400.       bn_check_top(a);

crypto/bn/bn_lib.c:401:9: Call
        399.   {
        400.       bn_check_top(a);
        401.       if (bn_expand(a, (int)sizeof(BN_ULONG) * 8) == NULL)
                       ^
        402.           return (0);
        403.       a->neg = 0;

crypto/bn/bn_lcl.h:658:1: Parameter `*a->d`
          656.                            const BIGNUM *add, const BIGNUM *rem, BN_CTX *ctx);
          657.   
          658. > static ossl_inline BIGNUM *bn_expand(BIGNUM *a, int bits)
          659.   {
          660.       if (bits > (INT_MAX - BN_BITS2 + 1))

crypto/bn/bn_lib.c:404:5: Array access: Offset: 0 Size: [0, 8388607] by call to `BN_X931_generate_Xpq` 
        402.           return (0);
        403.       a->neg = 0;
        404.       a->d[0] = w;
                   ^
        405.       a->top = (w ? 1 : 0);
        406.       bn_check_top(a);
