Changeset View
Changeset View
Standalone View
Standalone View
src/test/fuzz/addrdb.cpp
// Copyright (c) 2020 The Bitcoin Core developers | // Copyright (c) 2020 The Bitcoin Core developers | ||||
// Distributed under the MIT software license, see the accompanying | // Distributed under the MIT software license, see the accompanying | ||||
// file COPYING or http://www.opensource.org/licenses/mit-license.php. | // file COPYING or http://www.opensource.org/licenses/mit-license.php. | ||||
#include <addrdb.h> | #include <addrdb.h> | ||||
#include <optional.h> | |||||
#include <test/fuzz/FuzzedDataProvider.h> | #include <test/fuzz/FuzzedDataProvider.h> | ||||
#include <test/fuzz/fuzz.h> | #include <test/fuzz/fuzz.h> | ||||
#include <test/fuzz/util.h> | #include <test/fuzz/util.h> | ||||
#include <cassert> | #include <cassert> | ||||
#include <cstdint> | #include <cstdint> | ||||
#include <string> | #include <string> | ||||
#include <vector> | #include <vector> | ||||
void test_one_input(const std::vector<uint8_t> &buffer) { | void test_one_input(const std::vector<uint8_t> &buffer) { | ||||
FuzzedDataProvider fuzzed_data_provider(buffer.data(), buffer.size()); | FuzzedDataProvider fuzzed_data_provider(buffer.data(), buffer.size()); | ||||
[&] { | [&] { | ||||
switch (fuzzed_data_provider.ConsumeIntegralInRange<int>(0, 2)) { | switch (fuzzed_data_provider.ConsumeIntegralInRange<int>(0, 2)) { | ||||
case 0: | case 0: | ||||
return CBanEntry{ | return CBanEntry{ | ||||
fuzzed_data_provider.ConsumeIntegral<int64_t>()}; | fuzzed_data_provider.ConsumeIntegral<int64_t>()}; | ||||
break; | break; | ||||
case 1: { | case 1: { | ||||
const Optional<CBanEntry> ban_entry = | const std::optional<CBanEntry> ban_entry = | ||||
ConsumeDeserializable<CBanEntry>(fuzzed_data_provider); | ConsumeDeserializable<CBanEntry>(fuzzed_data_provider); | ||||
if (ban_entry) { | if (ban_entry) { | ||||
return *ban_entry; | return *ban_entry; | ||||
} | } | ||||
break; | break; | ||||
} | } | ||||
} | } | ||||
return CBanEntry{}; | return CBanEntry{}; | ||||
}(); | }(); | ||||
} | } |