@@ -22,38 +22,38 @@ FUZZ_TARGET(base58_encode_decode)
22
22
{
23
23
FuzzedDataProvider provider{buffer.data (), buffer.size ()};
24
24
const auto random_string{provider.ConsumeRandomLengthString (100 )};
25
- const int max_ret_len{provider.ConsumeIntegralInRange <int >(-1 , 100 )};
26
25
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)) {
29
30
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
+ }
32
37
}
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)));
38
38
}
39
39
40
40
FUZZ_TARGET (base58check_encode_decode)
41
41
{
42
42
FuzzedDataProvider provider{buffer.data (), buffer.size ()};
43
43
const auto random_string{provider.ConsumeRandomLengthString (100 )};
44
- const int max_ret_len{provider.ConsumeIntegralInRange <int >(-1 , 100 )};
45
44
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)) {
48
49
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
+ }
51
56
}
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)));
57
57
}
58
58
59
59
FUZZ_TARGET (base32_encode_decode)
0 commit comments