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

Function FUZZ_TARGET

src/test/fuzz/chain.cpp:14–68  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

12#include <vector>
13
14FUZZ_TARGET(chain)
15{
16 FuzzedDataProvider fuzzed_data_provider(buffer.data(), buffer.size());
17 std::optional<CDiskBlockIndex> disk_block_index = ConsumeDeserializable<CDiskBlockIndex>(fuzzed_data_provider);
18 if (!disk_block_index) {
19 return;
20 }
21
22 const uint256 zero{};
23 disk_block_index->phashBlock = &zero;
24 {
25 LOCK(::cs_main);
26 (void)disk_block_index->GetBlockHash();
27 (void)disk_block_index->GetBlockPos();
28 (void)disk_block_index->GetBlockTime();
29 (void)disk_block_index->GetBlockTimeMax();
30 (void)disk_block_index->GetMedianTimePast();
31 (void)disk_block_index->GetUndoPos();
32 (void)disk_block_index->HaveTxsDownloaded();
33 (void)disk_block_index->IsValid();
34 (void)disk_block_index->ToString();
35 }
36
37 const CBlockHeader block_header = disk_block_index->GetBlockHeader();
38 (void)CDiskBlockIndex{*disk_block_index};
39 (void)disk_block_index->BuildSkip();
40
41 LIMITED_WHILE(fuzzed_data_provider.ConsumeBool(), 10000) {
42 const BlockStatus block_status = fuzzed_data_provider.PickValueInArray({
43 BlockStatus::BLOCK_VALID_UNKNOWN,
44 BlockStatus::BLOCK_VALID_RESERVED,
45 BlockStatus::BLOCK_VALID_TREE,
46 BlockStatus::BLOCK_VALID_TRANSACTIONS,
47 BlockStatus::BLOCK_VALID_CHAIN,
48 BlockStatus::BLOCK_VALID_SCRIPTS,
49 BlockStatus::BLOCK_VALID_MASK,
50 BlockStatus::BLOCK_HAVE_DATA,
51 BlockStatus::BLOCK_HAVE_UNDO,
52 BlockStatus::BLOCK_HAVE_MASK,
53 BlockStatus::BLOCK_FAILED_VALID,
54 BlockStatus::BLOCK_FAILED_CHILD,
55 BlockStatus::BLOCK_FAILED_MASK,
56 BlockStatus::BLOCK_OPT_WITNESS,
57 });
58 if (block_status & ~BLOCK_VALID_MASK) {
59 continue;
60 }
61 WITH_LOCK(::cs_main, (void)disk_block_index->RaiseValidity(block_status));
62 }
63
64 CBlockIndex block_index{block_header};
65 block_index.phashBlock = &zero;
66 (void)block_index.GetBlockHash();
67 (void)block_index.ToString();
68}

Callers

nothing calls this directly

Calls 13

GetBlockTimeMaxMethod · 0.80
GetMedianTimePastMethod · 0.80
HaveTxsDownloadedMethod · 0.80
BuildSkipMethod · 0.80
ConsumeBoolMethod · 0.80
PickValueInArrayMethod · 0.80
dataMethod · 0.45
sizeMethod · 0.45
GetBlockHashMethod · 0.45
GetBlockTimeMethod · 0.45
IsValidMethod · 0.45
ToStringMethod · 0.45

Tested by

no test coverage detected