Bitcoin Core 31.99.0
P2P Digital Currency
cuckoocache.cpp
Go to the documentation of this file.
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 <cuckoocache.h>
6#include <script/sigcache.h>
8#include <test/fuzz/fuzz.h>
9#include <test/fuzz/util.h>
11#include <util/byte_units.h>
12
13#include <cstdint>
14#include <string>
15#include <vector>
16
17namespace {
18FuzzedDataProvider* fuzzed_data_provider_ptr = nullptr;
19
20struct RandomHasher {
21 template <uint8_t>
22 uint32_t operator()(const bool& /* unused */) const
23 {
24 assert(fuzzed_data_provider_ptr != nullptr);
25 return fuzzed_data_provider_ptr->ConsumeIntegral<uint32_t>();
26 }
27};
28} // namespace
29
30FUZZ_TARGET(cuckoocache)
31{
32 FuzzedDataProvider fuzzed_data_provider(buffer.data(), buffer.size());
33 fuzzed_data_provider_ptr = &fuzzed_data_provider;
36 const size_t megabytes = fuzzed_data_provider.ConsumeIntegralInRange<size_t>(0, 16);
37 cuckoo_cache.setup_bytes(megabytes * 1_MiB);
38 } else {
39 cuckoo_cache.setup(fuzzed_data_provider.ConsumeIntegralInRange<uint32_t>(0, 4096));
40 }
43 cuckoo_cache.insert(fuzzed_data_provider.ConsumeBool());
44 } else {
46 auto erase = fuzzed_data_provider.ConsumeBool();
47 cuckoo_cache.contains(e, erase);
48 }
49 }
50 fuzzed_data_provider_ptr = nullptr;
51}
cache implements a cache with properties similar to a cuckoo-set.
Definition: cuckoocache.h:163
T ConsumeIntegralInRange(T min, T max)
FUZZ_TARGET(cuckoocache)
Definition: cuckoocache.cpp:30
#define LIMITED_WHILE(condition, limit)
Can be used to limit a theoretically unbounded loop.
Definition: fuzz.h:22
assert(!tx.IsCoinBase())
FuzzedDataProvider & fuzzed_data_provider
Definition: fees.cpp:39