// Copyright (c) 2020 The Bitcoin Core developers // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. #include #include #include #include #include #include #include #include #include void test_one_input(const std::vector& buffer) { FuzzedDataProvider fuzzed_data_provider(buffer.data(), buffer.size()); const CBanEntry ban_entry = [&] { switch (fuzzed_data_provider.ConsumeIntegralInRange(0, 3)) { case 0: return CBanEntry{fuzzed_data_provider.ConsumeIntegral()}; break; case 1: return CBanEntry{fuzzed_data_provider.ConsumeIntegral(), fuzzed_data_provider.PickValueInArray({ BanReason::BanReasonUnknown, BanReason::BanReasonNodeMisbehaving, BanReason::BanReasonManuallyAdded, })}; break; case 2: { const Optional ban_entry = ConsumeDeserializable(fuzzed_data_provider); if (ban_entry) { return *ban_entry; } break; } } return CBanEntry{}; }(); assert(!ban_entry.banReasonToString().empty()); }