diff --git a/src/test/fuzz/coins_view.cpp b/src/test/fuzz/coins_view.cpp --- a/src/test/fuzz/coins_view.cpp +++ b/src/test/fuzz/coins_view.cpp @@ -27,6 +27,7 @@ #include namespace { +const TestingSetup *g_setup; const Coin EMPTY_COIN{}; bool operator==(const Coin &a, const Coin &b) { @@ -40,6 +41,7 @@ void initialize() { static const auto testing_setup = MakeFuzzingContext(); + g_setup = testing_setup.get(); } void test_one_input(const std::vector &buffer) { @@ -303,7 +305,8 @@ (void)GetUTXOStats( &coins_view_cache, WITH_LOCK(::cs_main, - return std::ref(g_chainman.m_blockman)), + return std::ref( + g_setup->m_node.chainman->m_blockman)), stats); } catch (const std::logic_error &) { expected_code_path = true; diff --git a/src/test/fuzz/load_external_block_file.cpp b/src/test/fuzz/load_external_block_file.cpp deleted file mode 100644 --- a/src/test/fuzz/load_external_block_file.cpp +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright (c) 2020 The Bitcoin Core developers -// Distributed under the MIT software license, see the accompanying -// file COPYING or http://www.opensource.org/licenses/mit-license.php. - -#include -#include -#include - -#include -#include -#include -#include - -#include -#include - -void initialize() { - static const auto testing_setup = MakeFuzzingContext(); -} - -void test_one_input(const std::vector &buffer) { - FuzzedDataProvider fuzzed_data_provider{buffer.data(), buffer.size()}; - FuzzedFileProvider fuzzed_file_provider = ConsumeFile(fuzzed_data_provider); - FILE *fuzzed_block_file = fuzzed_file_provider.open(); - if (fuzzed_block_file == nullptr) { - return; - } - FlatFilePos flat_file_pos; - ::ChainstateActive().LoadExternalBlockFile( - GetConfig(), fuzzed_block_file, - fuzzed_data_provider.ConsumeBool() ? &flat_file_pos : nullptr); -} diff --git a/src/test/fuzz/validation_load_mempool.cpp b/src/test/fuzz/validation_load_mempool.cpp new file mode 100644 --- /dev/null +++ b/src/test/fuzz/validation_load_mempool.cpp @@ -0,0 +1,39 @@ +// Copyright (c) 2020 The Bitcoin Core developers +// Distributed under the MIT software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. + +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +namespace { +const TestingSetup *g_setup; +} // namespace + +void initialize_validation_load_mempool() { + static const auto testing_setup = + MakeNoLogFileContext(); + g_setup = testing_setup.get(); +} + +FUZZ_TARGET_INIT(validation_load_mempool, initialize_validation_load_mempool) { + FuzzedDataProvider fuzzed_data_provider{buffer.data(), buffer.size()}; + SetMockTime(ConsumeTime(fuzzed_data_provider)); + FuzzedFileProvider fuzzed_file_provider = ConsumeFile(fuzzed_data_provider); + + CTxMemPool pool{}; + auto fuzzed_fopen = [&](const fs::path &, const char *) { + return fuzzed_file_provider.open(); + }; + (void)LoadMempool(pool, g_setup->m_node.chainman->ActiveChainstate(), + fuzzed_fopen); + (void)DumpMempool(pool, fuzzed_fopen, true); +}