diff --git a/src/fuzzing/CheckBlock/fuzz.cpp b/src/fuzzing/CheckBlock/fuzz.cpp new file mode 100644 index 000000000..838f9cd10 --- /dev/null +++ b/src/fuzzing/CheckBlock/fuzz.cpp @@ -0,0 +1,29 @@ +#include "consensus/validation.h" +#include "chainparams.h" + +int main (int argc, char *argv[]) { + int retval = 0; + + SelectParams(CBaseChainParams::MAIN); + + CBlock block; + CAutoFile filein(fopen(argv[1], "rb"), SER_DISK, CLIENT_VERSION); + try { + filein >> block; + } catch (const std::exception& e) { + return -1; + } + + // We don't load the SNARK parameters because it's too slow. This means that + // valid blocks with shielded transactions will generate a crash. + + const CChainParams& chainparams = Params(); + auto verifier = libzcash::ProofVerifier::Disabled(); + CValidationState state; + // We don't check the PoW or Merkle tree root in order to reach more code. + if (!CheckBlock(block, state, chainparams, verifier, false, false)) { + retval = -1; + } + + return retval; +} diff --git a/src/fuzzing/CheckBlock/input/0.bin b/src/fuzzing/CheckBlock/input/0.bin new file mode 100644 index 000000000..af3882252 Binary files /dev/null and b/src/fuzzing/CheckBlock/input/0.bin differ diff --git a/src/fuzzing/CheckBlock/input/476431.bin b/src/fuzzing/CheckBlock/input/476431.bin new file mode 100644 index 000000000..ba56c7b7e Binary files /dev/null and b/src/fuzzing/CheckBlock/input/476431.bin differ diff --git a/src/fuzzing/CheckBlock/input/620000.bin b/src/fuzzing/CheckBlock/input/620000.bin new file mode 100644 index 000000000..72ee3018f Binary files /dev/null and b/src/fuzzing/CheckBlock/input/620000.bin differ diff --git a/src/fuzzing/DeserializeAddrMan/fuzz.cpp b/src/fuzzing/DeserializeAddrMan/fuzz.cpp new file mode 100644 index 000000000..1b520efc8 --- /dev/null +++ b/src/fuzzing/DeserializeAddrMan/fuzz.cpp @@ -0,0 +1,13 @@ +#include "addrman.h" +#include "streams.h" + +int main (int argc, char *argv[]) { + CAddrMan addrman; + CAutoFile filein(fopen(argv[1], "rb"), SER_DISK, CLIENT_VERSION); + try { + filein >> addrman; + return 0; + } catch (const std::exception&) { + return -1; + } +} diff --git a/src/fuzzing/DeserializeAddrMan/input/peers.dat-minus-4-byte-header b/src/fuzzing/DeserializeAddrMan/input/peers.dat-minus-4-byte-header new file mode 100644 index 000000000..ce52b0a1b Binary files /dev/null and b/src/fuzzing/DeserializeAddrMan/input/peers.dat-minus-4-byte-header differ diff --git a/src/fuzzing/ReadFeeEstimates/fuzz.cpp b/src/fuzzing/ReadFeeEstimates/fuzz.cpp new file mode 100644 index 000000000..1bdf2cf1d --- /dev/null +++ b/src/fuzzing/ReadFeeEstimates/fuzz.cpp @@ -0,0 +1,13 @@ +#include "txmempool.h" + +int main (int argc, char *argv[]) { + CFeeRate rate; + CTxMemPool mempool(rate); + CAutoFile est_filein(fopen(argv[1], "rb"), SER_DISK, CLIENT_VERSION); + + if (mempool.ReadFeeEstimates(est_filein)) { + return 0; + } else { + return -1; + } +} diff --git a/src/fuzzing/ReadFeeEstimates/input/fee_estimates.dat b/src/fuzzing/ReadFeeEstimates/input/fee_estimates.dat new file mode 100644 index 000000000..c3c5961ac Binary files /dev/null and b/src/fuzzing/ReadFeeEstimates/input/fee_estimates.dat differ