File tree Expand file tree Collapse file tree 2 files changed +48
-0
lines changed
Expand file tree Collapse file tree 2 files changed +48
-0
lines changed Original file line number Diff line number Diff line change @@ -14,6 +14,7 @@ FUZZ_TARGETS = \
1414 test/fuzz/block_deserialize \
1515 test/fuzz/block_file_info_deserialize \
1616 test/fuzz/block_filter_deserialize \
17+ test/fuzz/block_header \
1718 test/fuzz/block_header_and_short_txids_deserialize \
1819 test/fuzz/blockheader_deserialize \
1920 test/fuzz/blocklocator_deserialize \
@@ -343,6 +344,12 @@ test_fuzz_block_filter_deserialize_LDADD = $(FUZZ_SUITE_LD_COMMON)
343344test_fuzz_block_filter_deserialize_LDFLAGS = $(RELDFLAGS) $(AM_LDFLAGS) $(LIBTOOL_APP_LDFLAGS)
344345test_fuzz_block_filter_deserialize_SOURCES = $(FUZZ_SUITE) test/fuzz/deserialize.cpp
345346
347+ test_fuzz_block_header_CPPFLAGS = $(AM_CPPFLAGS) $(BITCOIN_INCLUDES)
348+ test_fuzz_block_header_CXXFLAGS = $(AM_CXXFLAGS) $(PIE_FLAGS)
349+ test_fuzz_block_header_LDADD = $(FUZZ_SUITE_LD_COMMON)
350+ test_fuzz_block_header_LDFLAGS = $(RELDFLAGS) $(AM_LDFLAGS) $(LIBTOOL_APP_LDFLAGS)
351+ test_fuzz_block_header_SOURCES = $(FUZZ_SUITE) test/fuzz/block_header.cpp
352+
346353test_fuzz_block_header_and_short_txids_deserialize_CPPFLAGS = $(AM_CPPFLAGS) $(BITCOIN_INCLUDES) -DBLOCK_HEADER_AND_SHORT_TXIDS_DESERIALIZE=1
347354test_fuzz_block_header_and_short_txids_deserialize_CXXFLAGS = $(AM_CXXFLAGS) $(PIE_FLAGS)
348355test_fuzz_block_header_and_short_txids_deserialize_LDADD = $(FUZZ_SUITE_LD_COMMON)
Original file line number Diff line number Diff line change 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 < optional.h>
6+ #include < primitives/block.h>
7+ #include < test/fuzz/FuzzedDataProvider.h>
8+ #include < test/fuzz/fuzz.h>
9+ #include < test/fuzz/util.h>
10+ #include < uint256.h>
11+
12+ #include < cassert>
13+ #include < cstdint>
14+ #include < string>
15+ #include < vector>
16+
17+ void test_one_input (const std::vector<uint8_t >& buffer)
18+ {
19+ FuzzedDataProvider fuzzed_data_provider (buffer.data (), buffer.size ());
20+ const Optional<CBlockHeader> block_header = ConsumeDeserializable<CBlockHeader>(fuzzed_data_provider);
21+ if (!block_header) {
22+ return ;
23+ }
24+ {
25+ const uint256 hash = block_header->GetHash ();
26+ static const uint256 u256_max (uint256S (" ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" ));
27+ assert (hash != u256_max);
28+ assert (block_header->GetBlockTime () == block_header->nTime );
29+ assert (block_header->IsNull () == (block_header->nBits == 0 ));
30+ }
31+ {
32+ CBlockHeader mut_block_header = *block_header;
33+ mut_block_header.SetNull ();
34+ assert (mut_block_header.IsNull ());
35+ CBlock block{*block_header};
36+ assert (block.GetBlockHeader ().GetHash () == block_header->GetHash ());
37+ (void )block.ToString ();
38+ block.SetNull ();
39+ assert (block.GetBlockHeader ().GetHash () == mut_block_header.GetHash ());
40+ }
41+ }
You can’t perform that action at this time.
0 commit comments