Skip to content

Commit f919d91

Browse files
l0rincbrunoerg
andcommitted
fuzz: Add fuzzing for max_ret_len in DecodeBase58/DecodeBase58Check
Different values are used for max_ret_len throughout the codebase (e.g., 21, 34, 78). Theoretically, negative and zero values are also permitted. Let's stress-test those as well. Co-authored-by: brunoerg <[email protected]>
1 parent 635bc58 commit f919d91

File tree

1 file changed

+4
-2
lines changed

1 file changed

+4
-2
lines changed

src/test/fuzz/base_encode_decode.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,11 @@ FUZZ_TARGET(base58_encode_decode)
2121
{
2222
FuzzedDataProvider provider(buffer.data(), buffer.size());
2323
const std::string random_string{provider.ConsumeRandomLengthString(1000)};
24+
const int max_ret_len{provider.ConsumeIntegralInRange<int>(-1, 1000)};
2425

2526
// Decode/Encode roundtrip
2627
std::vector<unsigned char> decoded;
27-
if (DecodeBase58(random_string, decoded, 100)) {
28+
if (DecodeBase58(random_string, decoded, max_ret_len)) {
2829
const auto encoded_string{EncodeBase58(decoded)};
2930
assert(encoded_string == TrimStringView(random_string));
3031
assert(encoded_string.empty() || !DecodeBase58(encoded_string, decoded, provider.ConsumeIntegralInRange<int>(0, decoded.size() - 1)));
@@ -40,10 +41,11 @@ FUZZ_TARGET(base58check_encode_decode)
4041
{
4142
FuzzedDataProvider provider(buffer.data(), buffer.size());
4243
const std::string random_string{provider.ConsumeRandomLengthString(1000)};
44+
const int max_ret_len{provider.ConsumeIntegralInRange<int>(-1, 1000)};
4345

4446
// Decode/Encode roundtrip
4547
std::vector<unsigned char> decoded;
46-
if (DecodeBase58Check(random_string, decoded, 100)) {
48+
if (DecodeBase58Check(random_string, decoded, max_ret_len)) {
4749
const auto encoded_string{EncodeBase58Check(decoded)};
4850
assert(encoded_string == TrimStringView(random_string));
4951
assert(encoded_string.empty() || !DecodeBase58Check(encoded_string, decoded, provider.ConsumeIntegralInRange<int>(0, decoded.size() - 1)));

0 commit comments

Comments
 (0)