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 <protocol.h>
6 : : #include <test/fuzz/FuzzedDataProvider.h>
7 : : #include <test/fuzz/fuzz.h>
8 : : #include <test/fuzz/util.h>
9 : :
10 : : #include <cstdint>
11 : : #include <optional>
12 : : #include <stdexcept>
13 : : #include <vector>
14 : :
15 [ + - + - ]: 75 : FUZZ_TARGET(protocol)
16 : : {
17 : 72 : FuzzedDataProvider fuzzed_data_provider(buffer.data(), buffer.size());
18 : 72 : const std::optional<CInv> inv = ConsumeDeserializable<CInv>(fuzzed_data_provider);
19 [ + + ]: 72 : if (!inv) {
20 : 29 : return;
21 : : }
22 : : try {
23 [ + + ]: 43 : (void)inv->GetCommand();
24 [ + - ]: 43 : } catch (const std::out_of_range&) {
25 : 16 : }
26 : 43 : (void)inv->ToString();
27 : 43 : const std::optional<CInv> another_inv = ConsumeDeserializable<CInv>(fuzzed_data_provider);
28 [ + + ]: 43 : if (!another_inv) {
29 : 28 : return;
30 : : }
31 : 15 : (void)(*inv < *another_inv);
32 [ - + ]: 88 : }
|