Skip to content

Commit eb7c50c

Browse files
tests: Add common Consume* fuzzing functions
1 parent 5518eee commit eb7c50c

File tree

1 file changed

+18
-0
lines changed

1 file changed

+18
-0
lines changed

src/test/fuzz/util.h

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,11 @@
77

88
#include <attributes.h>
99
#include <optional.h>
10+
#include <script/script.h>
1011
#include <serialize.h>
1112
#include <streams.h>
1213
#include <test/fuzz/FuzzedDataProvider.h>
14+
#include <test/fuzz/fuzz.h>
1315
#include <version.h>
1416

1517
#include <cstdint>
@@ -36,4 +38,20 @@ NODISCARD inline Optional<T> ConsumeDeserializable(FuzzedDataProvider& fuzzed_da
3638
return obj;
3739
}
3840

41+
NODISCARD inline opcodetype ConsumeOpcodeType(FuzzedDataProvider& fuzzed_data_provider) noexcept
42+
{
43+
return static_cast<opcodetype>(fuzzed_data_provider.ConsumeIntegralInRange<uint32_t>(0, MAX_OPCODE));
44+
}
45+
46+
NODISCARD inline CScript ConsumeScript(FuzzedDataProvider& fuzzed_data_provider) noexcept
47+
{
48+
const std::vector<uint8_t> b = ConsumeRandomLengthByteVector(fuzzed_data_provider);
49+
return {b.begin(), b.end()};
50+
}
51+
52+
NODISCARD inline CScriptNum ConsumeScriptNum(FuzzedDataProvider& fuzzed_data_provider) noexcept
53+
{
54+
return CScriptNum{fuzzed_data_provider.ConsumeIntegral<int64_t>()};
55+
}
56+
3957
#endif // BITCOIN_TEST_FUZZ_UTIL_H

0 commit comments

Comments
 (0)