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()21 void 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)27 FUZZ_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