It's time for all of rng seed code to go. Goodbye
parent
92c58c4d5d
commit
cd8588077e
|
@ -17,12 +17,6 @@
|
||||||
* test code paths which are only executed when contexts are reused.
|
* test code paths which are only executed when contexts are reused.
|
||||||
* WARNING: Makes reproducing crashes much harder.
|
* WARNING: Makes reproducing crashes much harder.
|
||||||
* Default: Not defined.
|
* Default: Not defined.
|
||||||
* @param FUZZ_RNG_SEED_SIZE:
|
|
||||||
* The number of bytes of the source to look at when constructing a seed
|
|
||||||
* for the deterministic RNG. These bytes are discarded before passing
|
|
||||||
* the data to zstd functions. Every fuzzer initializes the RNG exactly
|
|
||||||
* once before doing anything else, even if it is unused.
|
|
||||||
* Default: 4.
|
|
||||||
* @param DEBUGLEVEL:
|
* @param DEBUGLEVEL:
|
||||||
* This is a parameter for the zstd library. Defining `DEBUGLEVEL=1`
|
* This is a parameter for the zstd library. Defining `DEBUGLEVEL=1`
|
||||||
* enables assert() statements in the zstd library. Higher levels enable
|
* enables assert() statements in the zstd library. Higher levels enable
|
||||||
|
@ -42,10 +36,6 @@
|
||||||
#ifndef FUZZ_H
|
#ifndef FUZZ_H
|
||||||
#define FUZZ_H
|
#define FUZZ_H
|
||||||
|
|
||||||
#ifndef FUZZ_RNG_SEED_SIZE
|
|
||||||
# define FUZZ_RNG_SEED_SIZE 4
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <stddef.h>
|
#include <stddef.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
||||||
|
|
|
@ -740,10 +740,8 @@ def gen(args):
|
||||||
for name in os.listdir(samples):
|
for name in os.listdir(samples):
|
||||||
samplename = abs_join(samples, name)
|
samplename = abs_join(samples, name)
|
||||||
outname = abs_join(seed, name)
|
outname = abs_join(seed, name)
|
||||||
rng_seed = os.urandom(args.fuzz_rng_seed_size)
|
|
||||||
with open(samplename, 'rb') as sample:
|
with open(samplename, 'rb') as sample:
|
||||||
with open(outname, 'wb') as out:
|
with open(outname, 'wb') as out:
|
||||||
out.write(rng_seed)
|
|
||||||
CHUNK_SIZE = 131072
|
CHUNK_SIZE = 131072
|
||||||
chunk = sample.read(CHUNK_SIZE)
|
chunk = sample.read(CHUNK_SIZE)
|
||||||
while len(chunk) > 0:
|
while len(chunk) > 0:
|
||||||
|
|
|
@ -55,37 +55,6 @@ extern "C" {
|
||||||
#define FUZZ_STATIC static
|
#define FUZZ_STATIC static
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
|
||||||
* Deterministically constructs a seed based on the fuzz input.
|
|
||||||
* Consumes up to the first FUZZ_RNG_SEED_SIZE bytes of the input.
|
|
||||||
*/
|
|
||||||
FUZZ_STATIC uint32_t FUZZ_seed(uint8_t const **src, size_t* size) {
|
|
||||||
uint8_t const *data = *src;
|
|
||||||
size_t const toHash = MIN(FUZZ_RNG_SEED_SIZE, *size);
|
|
||||||
*size -= toHash;
|
|
||||||
*src += toHash;
|
|
||||||
return XXH32(data, toHash, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
#define FUZZ_rotl32(x, r) (((x) << (r)) | ((x) >> (32 - (r))))
|
|
||||||
|
|
||||||
FUZZ_STATIC uint32_t FUZZ_rand(uint32_t *state) {
|
|
||||||
static const uint32_t prime1 = 2654435761U;
|
|
||||||
static const uint32_t prime2 = 2246822519U;
|
|
||||||
uint32_t rand32 = *state;
|
|
||||||
rand32 *= prime1;
|
|
||||||
rand32 += prime2;
|
|
||||||
rand32 = FUZZ_rotl32(rand32, 13);
|
|
||||||
*state = rand32;
|
|
||||||
return rand32 >> 5;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Returns a random numer in the range [min, max]. */
|
|
||||||
FUZZ_STATIC uint32_t FUZZ_rand32(uint32_t *state, uint32_t min, uint32_t max) {
|
|
||||||
uint32_t random = FUZZ_rand(state);
|
|
||||||
return min + (random % (max - min + 1));
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue