diff options
author | fanquake <fanquake@gmail.com> | 2021-05-12 11:02:25 +1000 |
---|---|---|
committer | fanquake <fanquake@gmail.com> | 2021-05-12 11:03:04 +1000 |
commit | 6754e1928b008fb05ebf77cb695346e7ef0861a6 (patch) | |
tree | 435a38ff12e7cf920e4a5cb53932d3ab6de0ec8d | |
parent | f0a76b3dbc649d122bf9acc66390fd457ed1602a (diff) | |
parent | faa0d94a7d9cdd10e81ee231a7b06d4b14b37e13 (diff) | |
download | bitcoin-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.cpp | 5 |
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 |