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 = \
14
14
test/fuzz/block_deserialize \
15
15
test/fuzz/block_file_info_deserialize \
16
16
test/fuzz/block_filter_deserialize \
17
+ test/fuzz/block_header \
17
18
test/fuzz/block_header_and_short_txids_deserialize \
18
19
test/fuzz/blockheader_deserialize \
19
20
test/fuzz/blocklocator_deserialize \
@@ -343,6 +344,12 @@ test_fuzz_block_filter_deserialize_LDADD = $(FUZZ_SUITE_LD_COMMON)
343
344
test_fuzz_block_filter_deserialize_LDFLAGS = $(RELDFLAGS) $(AM_LDFLAGS) $(LIBTOOL_APP_LDFLAGS)
344
345
test_fuzz_block_filter_deserialize_SOURCES = $(FUZZ_SUITE) test/fuzz/deserialize.cpp
345
346
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
+
346
353
test_fuzz_block_header_and_short_txids_deserialize_CPPFLAGS = $(AM_CPPFLAGS) $(BITCOIN_INCLUDES) -DBLOCK_HEADER_AND_SHORT_TXIDS_DESERIALIZE=1
347
354
test_fuzz_block_header_and_short_txids_deserialize_CXXFLAGS = $(AM_CXXFLAGS) $(PIE_FLAGS)
348
355
test_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