22
22
23
23
NODISCARD inline std::vector<uint8_t >
24
24
ConsumeRandomLengthByteVector (FuzzedDataProvider &fuzzed_data_provider,
25
- size_t max_length = 4096 ) noexcept {
25
+ const size_t max_length = 4096 ) noexcept {
26
26
const std::string s =
27
27
fuzzed_data_provider.ConsumeRandomLengthString (max_length);
28
28
return {s.begin (), s.end ()};
29
29
}
30
30
31
31
NODISCARD inline std::vector<std::string>
32
32
ConsumeRandomLengthStringVector (FuzzedDataProvider &fuzzed_data_provider,
33
- size_t max_vector_size = 16 ,
34
- size_t max_string_length = 16 ) noexcept {
33
+ const size_t max_vector_size = 16 ,
34
+ const size_t max_string_length = 16 ) noexcept {
35
35
const size_t n_elements =
36
36
fuzzed_data_provider.ConsumeIntegralInRange <size_t >(0 , max_vector_size);
37
37
std::vector<std::string> r;
@@ -42,10 +42,23 @@ ConsumeRandomLengthStringVector(FuzzedDataProvider &fuzzed_data_provider,
42
42
return r;
43
43
}
44
44
45
+ template <typename T>
46
+ NODISCARD inline std::vector<T>
47
+ ConsumeRandomLengthIntegralVector (FuzzedDataProvider &fuzzed_data_provider,
48
+ const size_t max_vector_size = 16 ) noexcept {
49
+ const size_t n_elements =
50
+ fuzzed_data_provider.ConsumeIntegralInRange <size_t >(0 , max_vector_size);
51
+ std::vector<T> r;
52
+ for (size_t i = 0 ; i < n_elements; ++i) {
53
+ r.push_back (fuzzed_data_provider.ConsumeIntegral <T>());
54
+ }
55
+ return r;
56
+ }
57
+
45
58
template <typename T>
46
59
NODISCARD inline std::optional<T>
47
60
ConsumeDeserializable (FuzzedDataProvider &fuzzed_data_provider,
48
- size_t max_length = 4096 ) noexcept {
61
+ const size_t max_length = 4096 ) noexcept {
49
62
const std::vector<uint8_t > buffer =
50
63
ConsumeRandomLengthByteVector (fuzzed_data_provider, max_length);
51
64
CDataStream ds{buffer, SER_NETWORK, INIT_PROTO_VERSION};
@@ -95,7 +108,8 @@ ConsumeUInt256(FuzzedDataProvider &fuzzed_data_provider) noexcept {
95
108
return uint256{v256};
96
109
}
97
110
98
- template <typename T> bool MultiplicationOverflow (T i, T j) {
111
+ template <typename T>
112
+ NODISCARD bool MultiplicationOverflow (const T i, const T j) noexcept {
99
113
static_assert (std::is_integral<T>::value, " Integral required." );
100
114
if (std::numeric_limits<T>::is_signed) {
101
115
if (i > 0 ) {
0 commit comments