crypto/dsa/dsa_ossl.c:267: error: BUFFER_OVERRUN_L3
  Offset: [3, +oo] (⇐ [0, +oo] + 3) Size: [0, 8388607] by call to `BN_rand_range`.
Showing all 15 steps of the trace


crypto/dsa/dsa_ossl.c:264:18: Call
262.                * This protects the private key from a weak PRNG.
263.                */
264.               if (!BN_generate_dsa_nonce(k, dsa->q, dsa->priv_key, dgst,
                        ^
265.                                          dlen, ctx))
266.                   goto err;

crypto/bn/bn_rand.c:299:1: Parameter `*out->d`
  297.    * used.
  298.    */
  299. > int BN_generate_dsa_nonce(BIGNUM *out, const BIGNUM *range,
  300.                             const BIGNUM *priv, const unsigned char *message,
  301.                             size_t message_len, BN_CTX *ctx)

crypto/dsa/dsa_ossl.c:267:21: Call
265.                                          dlen, ctx))
266.                   goto err;
267.           } else if (!BN_rand_range(k, dsa->q))
                           ^
268.               goto err;
269.       } while (BN_is_zero(k));

crypto/bn/bn_rand.c:281:1: Parameter `*r->d`
  279.   }
  280.   
  281. > int BN_rand_range(BIGNUM *r, const BIGNUM *range)
  282.   {
  283.       return bn_rand_range(0, r, range);

crypto/bn/bn_rand.c:283:12: Call
  281.   int BN_rand_range(BIGNUM *r, const BIGNUM *range)
  282.   {
  283.       return bn_rand_range(0, r, range);
                    ^
  284.   }
  285.   

crypto/bn/bn_rand.c:216:1: Parameter `*r->d`
    214.   
    215.   /* random number r:  0 <= r < range */
    216. > static int bn_rand_range(int pseudo, BIGNUM *r, const BIGNUM *range)
    217.   {
    218.       int (*bn_rand) (BIGNUM *, int, int, int) =

crypto/bn/bn_rand.c:233:9: Call
    231.   
    232.       if (n == 1)
    233.           BN_zero(r);
                   ^
    234.       else if (!BN_is_bit_set(range, n - 2) && !BN_is_bit_set(range, n - 3)) {
    235.           /*

crypto/bn/bn_lib.c:530:1: Parameter `*a->d`
      528.   }
      529.   
      530. > int BN_set_word(BIGNUM *a, BN_ULONG w)
      531.   {
      532.       bn_check_top(a);

crypto/bn/bn_lib.c:533:9: Call
      531.   {
      532.       bn_check_top(a);
      533.       if (bn_expand(a, (int)sizeof(BN_ULONG) * 8) == NULL)
                     ^
      534.           return (0);
      535.       a->neg = 0;

crypto/bn/bn_lib.c:390:1: Parameter `*b->d`
        388.    */
        389.   
        390. > BIGNUM *bn_expand2(BIGNUM *b, int words)
        391.   {
        392.       bn_check_top(b);

crypto/bn/bn_lib.c:395:23: Call
        393.   
        394.       if (words > b->dmax) {
        395.           BN_ULONG *a = bn_expand_internal(b, words);
                                     ^
        396.           if (!a)
        397.               return NULL;

crypto/bn/bn_lib.c:300:1: <Length trace>
298.   /* This is used by bn_expand2() */
299.   /* The caller MUST check that words > b->dmax before calling this */
300. > static BN_ULONG *bn_expand_internal(const BIGNUM *b, int words)
301.   {
302.       BN_ULONG *A, *a = NULL;

crypto/bn/bn_lib.c:300:1: Parameter `*b->d`
          298.   /* This is used by bn_expand2() */
          299.   /* The caller MUST check that words > b->dmax before calling this */
          300. > static BN_ULONG *bn_expand_internal(const BIGNUM *b, int words)
          301.   {
          302.       BN_ULONG *A, *a = NULL;

crypto/bn/bn_lib.c:335:5: Assignment
          333.   
          334.   #if 1
          335.       B = b->d;
                     ^
          336.       /* Check if the previous number needs to be copied */
          337.       if (B != NULL) {

crypto/bn/bn_lib.c:352:18: Array access: Offset: [3, +oo] (⇐ [0, +oo] + 3) Size: [0, 8388607] by call to `BN_rand_range` 
          350.               a1 = B[1];
          351.               a2 = B[2];
          352.               a3 = B[3];
                                  ^
          353.               A[0] = a0;
          354.               A[1] = a1;
