Bitcoin Core
22.99.0
P2P Digital Currency
src
test
fuzz
random.cpp
Go to the documentation of this file.
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 <
random.h
>
6
#include <
test/fuzz/FuzzedDataProvider.h
>
7
#include <
test/fuzz/fuzz.h
>
8
#include <
test/fuzz/util.h
>
9
10
#include <algorithm>
11
#include <cstdint>
12
#include <string>
13
#include <vector>
14
15
FUZZ_TARGET
(random)
16
{
17
FuzzedDataProvider
fuzzed_data_provider(buffer.data(), buffer.size());
18
FastRandomContext
fast_random_context{
ConsumeUInt256
(fuzzed_data_provider)};
19
(void)fast_random_context.rand64();
20
(void)fast_random_context.randbits(fuzzed_data_provider.
ConsumeIntegralInRange
<
int
>(0, 64));
21
(void)fast_random_context.randrange(fuzzed_data_provider.
ConsumeIntegralInRange
<uint64_t>(
FastRandomContext::min
() + 1,
FastRandomContext::max
()));
22
(void)fast_random_context.randbytes(fuzzed_data_provider.
ConsumeIntegralInRange
<
size_t
>(0, 1024));
23
(void)fast_random_context.rand32();
24
(void)fast_random_context.rand256();
25
(void)fast_random_context.randbool();
26
(void)fast_random_context();
27
28
std::vector<int64_t> integrals = ConsumeRandomLengthIntegralVector<int64_t>(fuzzed_data_provider);
29
Shuffle
(integrals.begin(), integrals.end(), fast_random_context);
30
std::shuffle(integrals.begin(), integrals.end(), fast_random_context);
31
}
ConsumeUInt256
uint256 ConsumeUInt256(FuzzedDataProvider &fuzzed_data_provider) noexcept
Definition:
util.h:195
FUZZ_TARGET
FUZZ_TARGET(random)
Definition:
random.cpp:15
util.h
random.h
FuzzedDataProvider.h
Shuffle
void Shuffle(I first, I last, R &&rng)
More efficient than using std::shuffle on a FastRandomContext.
Definition:
random.h:243
FastRandomContext::max
static constexpr uint64_t max()
Definition:
random.h:228
fuzz.h
FuzzedDataProvider
Definition:
FuzzedDataProvider.h:31
FastRandomContext::min
static constexpr uint64_t min()
Definition:
random.h:227
FuzzedDataProvider::ConsumeIntegralInRange
T ConsumeIntegralInRange(T min, T max)
Definition:
FuzzedDataProvider.h:204
FastRandomContext
Fast randomness source.
Definition:
random.h:131
Generated on Fri Feb 18 2022 20:03:26 for Bitcoin Core by
1.8.17