From 28187098c91cd650716d23687cbabb59d01d2373 Mon Sep 17 00:00:00 2001 From: brunoerg Date: Fri, 27 Dec 2024 17:50:56 -0300 Subject: [PATCH] fuzz: fuzz `max_ret_len` for `DecodeBase58`/`DecodeBase58Check` The value of `max_ret_len` is hardcoded (100). However, different values are used for this parameter depending on the usage. --- src/test/fuzz/base_encode_decode.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/test/fuzz/base_encode_decode.cpp b/src/test/fuzz/base_encode_decode.cpp index 0cc8cb58862b2..4de209d703d4a 100644 --- a/src/test/fuzz/base_encode_decode.cpp +++ b/src/test/fuzz/base_encode_decode.cpp @@ -2,6 +2,7 @@ // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. +#include #include #include @@ -19,16 +20,18 @@ using util::TrimStringView; FUZZ_TARGET(base_encode_decode) { - const std::string random_encoded_string(buffer.begin(), buffer.end()); + FuzzedDataProvider fuzzed_data_provider(buffer.data(), buffer.size()); + const std::string random_encoded_string(fuzzed_data_provider.ConsumeRandomLengthString()); std::vector decoded; - if (DecodeBase58(random_encoded_string, decoded, 100)) { + const auto max_ret_len{fuzzed_data_provider.ConsumeIntegralInRange(1, 300)}; + if (DecodeBase58(random_encoded_string, decoded, max_ret_len)) { const std::string encoded_string = EncodeBase58(decoded); assert(encoded_string == TrimStringView(encoded_string)); assert(ToLower(encoded_string) == ToLower(TrimString(random_encoded_string))); } - if (DecodeBase58Check(random_encoded_string, decoded, 100)) { + if (DecodeBase58Check(random_encoded_string, decoded, max_ret_len)) { const std::string encoded_string = EncodeBase58Check(decoded); assert(encoded_string == TrimString(encoded_string)); assert(ToLower(encoded_string) == ToLower(TrimString(random_encoded_string)));