using unbiased rand_below

This commit is contained in:
Dominik Maier 2020-08-26 05:28:33 +02:00
parent 78eaa6b203
commit 96ef7083c8

View File

@ -1027,7 +1027,12 @@ static inline u32 rand_below(afl_state_t *afl, u32 limit) {
}
return rand_next(afl) % limit;
/* Modulo is biased - we don't want our fuzzing to be biased so let's do it right. */
u64 unbiased_rnd;
do {
unbiased_rnd = rand_next(afl);
} while (unbiased_rnd >= (UINT64_MAX - (UINT64_MAX % limit)));
return unbiased_rnd % limit;
}