@@ -22,38 +22,38 @@ FUZZ_TARGET(base58_encode_decode)
2222{
2323 FuzzedDataProvider provider{buffer.data (), buffer.size ()};
2424 const auto random_string{provider.ConsumeRandomLengthString (100 )};
25- const int max_ret_len{provider.ConsumeIntegralInRange <int >(-1 , 100 )};
2625
27- // Decode/Encode roundtrip
28- if (std::vector<unsigned char > decoded; DecodeBase58 (random_string, decoded, max_ret_len)) {
26+ const auto encoded{EncodeBase58 (MakeUCharSpan (random_string))};
27+ const auto decode_input{provider.ConsumeBool () ? random_string : encoded};
28+ const int max_ret_len{provider.ConsumeIntegralInRange <int >(-1 , decode_input.size () + 1 )};
29+ if (std::vector<unsigned char > decoded; DecodeBase58 (decode_input, decoded, max_ret_len)) {
2930 const auto encoded_string{EncodeBase58 (decoded)};
30- assert (encoded_string == TrimStringView (random_string));
31- assert (decoded.empty () || !DecodeBase58 (encoded_string, decoded, provider.ConsumeIntegralInRange <int >(0 , decoded.size () - 1 )));
31+ assert (encoded_string == TrimStringView (decode_input));
32+ if (decoded.size () > 0 ) {
33+ assert (max_ret_len > 0 );
34+ assert (decoded.size () <= static_cast <size_t >(max_ret_len));
35+ assert (!DecodeBase58 (encoded_string, decoded, provider.ConsumeIntegralInRange <int >(0 , decoded.size () - 1 )));
36+ }
3237 }
33- // Encode/Decode roundtrip
34- const auto encoded{EncodeBase58 (MakeUCharSpan (random_string))};
35- std::vector<unsigned char > roundtrip_decoded;
36- assert (DecodeBase58 (encoded, roundtrip_decoded, random_string.size ())
37- && std::ranges::equal (roundtrip_decoded, MakeUCharSpan (random_string)));
3838}
3939
4040FUZZ_TARGET (base58check_encode_decode)
4141{
4242 FuzzedDataProvider provider{buffer.data (), buffer.size ()};
4343 const auto random_string{provider.ConsumeRandomLengthString (100 )};
44- const int max_ret_len{provider.ConsumeIntegralInRange <int >(-1 , 100 )};
4544
46- // Decode/Encode roundtrip
47- if (std::vector<unsigned char > decoded; DecodeBase58Check (random_string, decoded, max_ret_len)) {
45+ const auto encoded{EncodeBase58Check (MakeUCharSpan (random_string))};
46+ const auto decode_input{provider.ConsumeBool () ? random_string : encoded};
47+ const int max_ret_len{provider.ConsumeIntegralInRange <int >(-1 , decode_input.size () + 1 )};
48+ if (std::vector<unsigned char > decoded; DecodeBase58Check (decode_input, decoded, max_ret_len)) {
4849 const auto encoded_string{EncodeBase58Check (decoded)};
49- assert (encoded_string == TrimStringView (random_string));
50- assert (decoded.empty () || !DecodeBase58Check (encoded_string, decoded, provider.ConsumeIntegralInRange <int >(0 , decoded.size () - 1 )));
50+ assert (encoded_string == TrimStringView (decode_input));
51+ if (decoded.size () > 0 ) {
52+ assert (max_ret_len > 0 );
53+ assert (decoded.size () <= static_cast <size_t >(max_ret_len));
54+ assert (!DecodeBase58Check (encoded_string, decoded, provider.ConsumeIntegralInRange <int >(0 , decoded.size () - 1 )));
55+ }
5156 }
52- // Encode/Decode roundtrip
53- const auto encoded{EncodeBase58Check (MakeUCharSpan (random_string))};
54- std::vector<unsigned char > roundtrip_decoded;
55- assert (DecodeBase58Check (encoded, roundtrip_decoded, random_string.size ())
56- && std::ranges::equal (roundtrip_decoded, MakeUCharSpan (random_string)));
5757}
5858
5959FUZZ_TARGET (base32_encode_decode)
0 commit comments