protocol.cpp
1 // Copyright (c) 2020-present 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 FUZZ_TARGET(protocol) 16 { 17 FuzzedDataProvider fuzzed_data_provider(buffer.data(), buffer.size()); 18 const std::optional<CInv> inv = ConsumeDeserializable<CInv>(fuzzed_data_provider); 19 if (!inv) { 20 return; 21 } 22 try { 23 (void)inv->GetMessageType(); 24 } catch (const std::out_of_range&) { 25 } 26 (void)inv->ToString(); 27 const std::optional<CInv> another_inv = ConsumeDeserializable<CInv>(fuzzed_data_provider); 28 if (!another_inv) { 29 return; 30 } 31 (void)(*inv < *another_inv); 32 }