1 // Copyright (c) 2020 The Bitcoin Core developers 2 // Distributed under the MIT software license, see the accompanying 3 // file COPYING or http://www.opensource.org/licenses/mit-license.php. 4 5 #include <chainparamsbase.h> 6 #include <test/fuzz/FuzzedDataProvider.h> 7 #include <test/fuzz/fuzz.h> 8 #include <test/fuzz/util.h> 9 #include <test/util/setup_common.h> 10 #include <txmempool.h> 11 #include <util/time.h> 12 #include <validation.h> 13 14 #include <cstdint> 15 #include <vector> 16 17 namespace { 18 const TestingSetup* g_setup; 19 } // namespace 20 initialize_validation_load_mempool()21void initialize_validation_load_mempool() 22 { 23 static const auto testing_setup = MakeNoLogFileContext<const TestingSetup>(); 24 g_setup = testing_setup.get(); 25 } 26 FUZZ_TARGET_INIT(validation_load_mempool,initialize_validation_load_mempool)27FUZZ_TARGET_INIT(validation_load_mempool, initialize_validation_load_mempool) 28 { 29 FuzzedDataProvider fuzzed_data_provider{buffer.data(), buffer.size()}; 30 SetMockTime(ConsumeTime(fuzzed_data_provider)); 31 FuzzedFileProvider fuzzed_file_provider = ConsumeFile(fuzzed_data_provider); 32 33 CTxMemPool pool{}; 34 auto fuzzed_fopen = [&](const fs::path&, const char*) { 35 return fuzzed_file_provider.open(); 36 }; 37 (void)LoadMempool(pool, g_setup->m_node.chainman->ActiveChainstate(), fuzzed_fopen); 38 (void)DumpMempool(pool, fuzzed_fopen, true); 39 } 40