Skip to content

Commit 6754e19

Browse files
committed
Merge bitcoin/bitcoin#21922: fuzz: Avoid timeout in EncodeBase58
faa0d94 fuzz: Avoid timeout in EncodeBase58 (MarcoFalke) Pull request description: The complexity is O(N^2), so limit the size. Hopefully fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=34126 Oss-Fuzz testcase for `rpc` fuzzer: https://github.com/bitcoin/bitcoin/files/6461382/clusterfuzz-testcase-minimized-rpc-4831734974775296.log ACKs for top commit: practicalswift: cr ACK faa0d94: patch looks correct sipa: utACK faa0d94 Tree-SHA512: 57ad9de8d811b828982d09a586782fc8a62fa3685590301d58120e2249caa30a9dccd3abe0b47e00ea8482de705fe0edbed298ab8761ea0d29496b50ed2db5d7
2 parents f0a76b3 + faa0d94 commit 6754e19

File tree

1 file changed

+3
-2
lines changed

1 file changed

+3
-2
lines changed

src/test/fuzz/rpc.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,7 @@ const std::vector<std::string> RPC_COMMANDS_SAFE_FOR_FUZZING{
168168
std::string ConsumeScalarRPCArgument(FuzzedDataProvider& fuzzed_data_provider)
169169
{
170170
const size_t max_string_length = 4096;
171+
const size_t max_base58_bytes_length{64};
171172
std::string r;
172173
CallOneOf(
173174
fuzzed_data_provider,
@@ -221,11 +222,11 @@ std::string ConsumeScalarRPCArgument(FuzzedDataProvider& fuzzed_data_provider)
221222
},
222223
[&] {
223224
// base58 argument
224-
r = EncodeBase58(MakeUCharSpan(fuzzed_data_provider.ConsumeRandomLengthString(max_string_length)));
225+
r = EncodeBase58(MakeUCharSpan(fuzzed_data_provider.ConsumeRandomLengthString(max_base58_bytes_length)));
225226
},
226227
[&] {
227228
// base58 argument with checksum
228-
r = EncodeBase58Check(MakeUCharSpan(fuzzed_data_provider.ConsumeRandomLengthString(max_string_length)));
229+
r = EncodeBase58Check(MakeUCharSpan(fuzzed_data_provider.ConsumeRandomLengthString(max_base58_bytes_length)));
229230
},
230231
[&] {
231232
// hex encoded block

0 commit comments

Comments
 (0)