aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorfanquake <fanquake@gmail.com>2021-05-12 11:02:25 +1000
committerfanquake <fanquake@gmail.com>2021-05-12 11:03:04 +1000
commit6754e1928b008fb05ebf77cb695346e7ef0861a6 (patch)
tree435a38ff12e7cf920e4a5cb53932d3ab6de0ec8d
parentf0a76b3dbc649d122bf9acc66390fd457ed1602a (diff)
parentfaa0d94a7d9cdd10e81ee231a7b06d4b14b37e13 (diff)
downloadbitcoin-6754e1928b008fb05ebf77cb695346e7ef0861a6.tar.xz
Merge bitcoin/bitcoin#21922: fuzz: Avoid timeout in EncodeBase58
faa0d94a7d9cdd10e81ee231a7b06d4b14b37e13 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 faa0d94a7d9cdd10e81ee231a7b06d4b14b37e13: patch looks correct sipa: utACK faa0d94a7d9cdd10e81ee231a7b06d4b14b37e13 Tree-SHA512: 57ad9de8d811b828982d09a586782fc8a62fa3685590301d58120e2249caa30a9dccd3abe0b47e00ea8482de705fe0edbed298ab8761ea0d29496b50ed2db5d7
-rw-r--r--src/test/fuzz/rpc.cpp5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/test/fuzz/rpc.cpp b/src/test/fuzz/rpc.cpp
index cf32a79932..9195cc4873 100644
--- a/src/test/fuzz/rpc.cpp
+++ b/src/test/fuzz/rpc.cpp
@@ -168,6 +168,7 @@ const std::vector<std::string> RPC_COMMANDS_SAFE_FOR_FUZZING{
std::string ConsumeScalarRPCArgument(FuzzedDataProvider& fuzzed_data_provider)
{
const size_t max_string_length = 4096;
+ const size_t max_base58_bytes_length{64};
std::string r;
CallOneOf(
fuzzed_data_provider,
@@ -221,11 +222,11 @@ std::string ConsumeScalarRPCArgument(FuzzedDataProvider& fuzzed_data_provider)
},
[&] {
// base58 argument
- r = EncodeBase58(MakeUCharSpan(fuzzed_data_provider.ConsumeRandomLengthString(max_string_length)));
+ r = EncodeBase58(MakeUCharSpan(fuzzed_data_provider.ConsumeRandomLengthString(max_base58_bytes_length)));
},
[&] {
// base58 argument with checksum
- r = EncodeBase58Check(MakeUCharSpan(fuzzed_data_provider.ConsumeRandomLengthString(max_string_length)));
+ r = EncodeBase58Check(MakeUCharSpan(fuzzed_data_provider.ConsumeRandomLengthString(max_base58_bytes_length)));
},
[&] {
// hex encoded block