MCPcopy Create free account
hub / github.com/ElementsProject/elements / FUZZ_TARGET

Function FUZZ_TARGET

src/test/fuzz/merkleblock.cpp:16–49  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

14#include <vector>
15
16FUZZ_TARGET(merkleblock)
17{
18 FuzzedDataProvider fuzzed_data_provider(buffer.data(), buffer.size());
19 CPartialMerkleTree partial_merkle_tree;
20 CallOneOf(
21 fuzzed_data_provider,
22 [&] {
23 const std::optional<CPartialMerkleTree> opt_partial_merkle_tree = ConsumeDeserializable<CPartialMerkleTree>(fuzzed_data_provider);
24 if (opt_partial_merkle_tree) {
25 partial_merkle_tree = *opt_partial_merkle_tree;
26 }
27 },
28 [&] {
29 CMerkleBlock merkle_block;
30 const std::optional<CBlock> opt_block = ConsumeDeserializable<CBlock>(fuzzed_data_provider);
31 CBloomFilter bloom_filter;
32 std::set<uint256> txids;
33 if (opt_block && !opt_block->vtx.empty()) {
34 if (fuzzed_data_provider.ConsumeBool()) {
35 merkle_block = CMerkleBlock{*opt_block, bloom_filter};
36 } else if (fuzzed_data_provider.ConsumeBool()) {
37 LIMITED_WHILE(fuzzed_data_provider.ConsumeBool(), 10000) {
38 txids.insert(ConsumeUInt256(fuzzed_data_provider));
39 }
40 merkle_block = CMerkleBlock{*opt_block, txids};
41 }
42 }
43 partial_merkle_tree = merkle_block.txn;
44 });
45 (void)partial_merkle_tree.GetNumTransactions();
46 std::vector<uint256> matches;
47 std::vector<unsigned int> indices;
48 (void)partial_merkle_tree.ExtractMatches(matches, indices);
49}

Callers

nothing calls this directly

Calls 9

CallOneOfFunction · 0.85
ConsumeUInt256Function · 0.85
ConsumeBoolMethod · 0.80
dataMethod · 0.45
sizeMethod · 0.45
emptyMethod · 0.45
insertMethod · 0.45
GetNumTransactionsMethod · 0.45
ExtractMatchesMethod · 0.45

Tested by

no test coverage detected