From 4e2410742a7a3466359bc871be963fa4a8415d0b Mon Sep 17 00:00:00 2001 From: Rusty Russell Date: Mon, 19 Apr 2021 10:22:00 +0930 Subject: [PATCH] tests/fuzz: update for fmt_amount changes, create pseudorand for fuzzing. Reported-by: Christian Reitter Signed-off-by: Rusty Russell --- tests/fuzz/fuzz-amount.c | 8 ++++---- tests/fuzz/libfuzz.c | 17 +++++++++++++++-- 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/tests/fuzz/fuzz-amount.c b/tests/fuzz/fuzz-amount.c index 3e5701926..512ff2d19 100644 --- a/tests/fuzz/fuzz-amount.c +++ b/tests/fuzz/fuzz-amount.c @@ -43,15 +43,15 @@ void run(const uint8_t *data, size_t size) /* Format should inconditionally produce valid amount strings according to our * parser */ - fmt_msat = fmt_amount_msat(NULL, &msat); - fmt_msatbtc = fmt_amount_msat_btc(NULL, &msat, true); + fmt_msat = fmt_amount_msat(NULL, msat); + fmt_msatbtc = fmt_amount_msat_btc(NULL, msat, true); assert(parse_amount_msat(&msat, fmt_msat, tal_count(fmt_msat))); assert(parse_amount_msat(&msat, fmt_msatbtc, tal_count(fmt_msatbtc))); tal_free(fmt_msat); tal_free(fmt_msatbtc); - fmt_sat = fmt_amount_sat(NULL, &sat); - fmt_satbtc = fmt_amount_sat_btc(NULL, &sat, true); + fmt_sat = fmt_amount_sat(NULL, sat); + fmt_satbtc = fmt_amount_sat_btc(NULL, sat, true); assert(parse_amount_sat(&sat, fmt_sat, tal_count(fmt_sat))); assert(parse_amount_sat(&sat, fmt_satbtc, tal_count(fmt_satbtc))); tal_free(fmt_sat); diff --git a/tests/fuzz/libfuzz.c b/tests/fuzz/libfuzz.c index a940fcb08..1907a5b16 100644 --- a/tests/fuzz/libfuzz.c +++ b/tests/fuzz/libfuzz.c @@ -1,15 +1,28 @@ #include +#include #include +#include +#include #include #include int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size); int LLVMFuzzerInitialize(int *argc, char ***argv); -int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { - run(data, size); +/* Provide a non-random pseudo-random function to speed fuzzing. */ +static isaac64_ctx isaac64; +uint64_t pseudorand(uint64_t max) +{ + assert(max); + return isaac64_next_uint(&isaac64, max); +} + +int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { + isaac64_init(&isaac64, NULL, 0); + + run(data, size); return 0; }