Branch data Line data Source code
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 <primitives/block.h>
6 : : #include <test/fuzz/FuzzedDataProvider.h>
7 : : #include <test/fuzz/fuzz.h>
8 : : #include <test/fuzz/util.h>
9 : : #include <uint256.h>
10 : :
11 : : #include <cassert>
12 : : #include <cstdint>
13 : : #include <optional>
14 : : #include <string>
15 : : #include <vector>
16 : :
17 [ + - ]: 515 : FUZZ_TARGET(block_header)
18 : : {
19 : 103 : FuzzedDataProvider fuzzed_data_provider(buffer.data(), buffer.size());
20 : 103 : const std::optional<CBlockHeader> block_header = ConsumeDeserializable<CBlockHeader>(fuzzed_data_provider);
21 [ + + ]: 103 : if (!block_header) {
22 : : return;
23 : : }
24 : 88 : {
25 : 88 : const uint256 hash = block_header->GetHash();
26 : 88 : constexpr uint256 u256_max{"ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"};
27 [ - + ]: 88 : assert(hash != u256_max);
28 : 88 : assert(block_header->GetBlockTime() == block_header->nTime);
29 : 88 : assert(block_header->IsNull() == (block_header->nBits == 0));
30 : : }
31 : 88 : {
32 : 88 : CBlockHeader mut_block_header = *block_header;
33 : 88 : mut_block_header.SetNull();
34 [ - + ]: 88 : assert(mut_block_header.IsNull());
35 : 88 : CBlock block{*block_header};
36 [ + - + - : 88 : assert(block.GetBlockHeader().GetHash() == block_header->GetHash());
- + ]
37 [ + - ]: 88 : (void)block.ToString();
38 : 88 : block.SetNull();
39 [ + - + - : 88 : assert(block.GetBlockHeader().GetHash() == mut_block_header.GetHash());
- + ]
40 : 88 : }
41 : 88 : {
42 : 88 : std::optional<CBlockLocator> block_locator = ConsumeDeserializable<CBlockLocator>(fuzzed_data_provider);
43 [ + + ]: 88 : if (block_locator) {
44 [ + + ]: 11 : (void)block_locator->IsNull();
45 [ + + ]: 11 : block_locator->SetNull();
46 [ - + ]: 11 : assert(block_locator->IsNull());
47 : : }
48 : 88 : }
49 : : }
|