aboutsummaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/afl-fuzz.h10
1 files changed, 8 insertions, 2 deletions
diff --git a/include/afl-fuzz.h b/include/afl-fuzz.h
index c5b01da8..f3a76492 100644
--- a/include/afl-fuzz.h
+++ b/include/afl-fuzz.h
@@ -1027,11 +1027,17 @@ static inline u32 rand_below(afl_state_t *afl, u32 limit) {
}
- /* Modulo is biased - we don't want our fuzzing to be biased so let's do it right. */
- u64 unbiased_rnd;
+ /* Modulo is biased - we don't want our fuzzing to be biased so let's do it
+ right. See:
+ https://stackoverflow.com/questions/10984974/why-do-people-say-there-is-modulo-bias-when-using-a-random-number-generator
+ */
+ u64 unbiased_rnd;
do {
+
unbiased_rnd = rand_next(afl);
+
} while (unlikely(unbiased_rnd >= (UINT64_MAX - (UINT64_MAX % limit))));
+
return unbiased_rnd % limit;
}