diff options
author | fanquake <fanquake@gmail.com> | 2023-11-17 10:07:47 +0000 |
---|---|---|
committer | fanquake <fanquake@gmail.com> | 2023-11-17 10:12:35 +0000 |
commit | afd3e99856208d83bccfeb7bfbb0462f665b28e1 (patch) | |
tree | 857973012e6a2f560cf62c7218e919806b06ade3 /src/test/fuzz | |
parent | 22025d06e53f9bfccf88c600815f1cc496595d5d (diff) | |
parent | faa25718b3f11f24aa41f0968bbd4da104814bc5 (diff) |
Merge bitcoin/bitcoin#28873: fuzz: AutoFile with XOR
faa25718b3f11f24aa41f0968bbd4da104814bc5 fuzz: AutoFile with XOR (MarcoFalke)
fab5cb9066366d93531f34e649a10addf44cd2ca fuzz: Reduce LIMITED_WHILE limit for file fuzzing (MarcoFalke)
fa5388fad3e87d56395bfe2467d2d6448a8f2e40 fuzz: Remove FuzzedAutoFileProvider (MarcoFalke)
Pull request description:
This should help to get fuzz coverage for https://maflcko.github.io/b-c-cov/fuzz.coverage/src/streams.cpp.gcov.html
Also, remove unused code and fix a timeout bug.
ACKs for top commit:
dergoegge:
ACK faa25718b3f11f24aa41f0968bbd4da104814bc5
Tree-SHA512: 56f1e6fd5cb2b66ffd9a7d9c09c9b8e396be3e7485feb03b35b6bd3c48e624fdaed50b472e4ffec21f09efb5e949d7ee32a13851849c9140b6b4cf25917dd7ac
Diffstat (limited to 'src/test/fuzz')
-rw-r--r-- | src/test/fuzz/autofile.cpp | 16 | ||||
-rw-r--r-- | src/test/fuzz/buffered_file.cpp | 14 | ||||
-rw-r--r-- | src/test/fuzz/load_external_block_file.cpp | 2 | ||||
-rw-r--r-- | src/test/fuzz/policy_estimator.cpp | 5 | ||||
-rw-r--r-- | src/test/fuzz/policy_estimator_io.cpp | 8 | ||||
-rw-r--r-- | src/test/fuzz/util.h | 25 | ||||
-rw-r--r-- | src/test/fuzz/validation_load_mempool.cpp | 2 |
7 files changed, 29 insertions, 43 deletions
diff --git a/src/test/fuzz/autofile.cpp b/src/test/fuzz/autofile.cpp index a7b41370a8..45316b6b21 100644 --- a/src/test/fuzz/autofile.cpp +++ b/src/test/fuzz/autofile.cpp @@ -2,24 +2,28 @@ // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. +#include <span.h> #include <streams.h> #include <test/fuzz/FuzzedDataProvider.h> #include <test/fuzz/fuzz.h> #include <test/fuzz/util.h> #include <array> -#include <cstdint> +#include <cstddef> +#include <cstdio> #include <iostream> -#include <optional> -#include <string> #include <vector> FUZZ_TARGET(autofile) { FuzzedDataProvider fuzzed_data_provider{buffer.data(), buffer.size()}; - FuzzedAutoFileProvider fuzzed_auto_file_provider = ConsumeAutoFile(fuzzed_data_provider); - AutoFile auto_file{fuzzed_auto_file_provider.open()}; - LIMITED_WHILE(fuzzed_data_provider.ConsumeBool(), 10000) { + FuzzedFileProvider fuzzed_file_provider{fuzzed_data_provider}; + AutoFile auto_file{ + fuzzed_file_provider.open(), + ConsumeRandomLengthByteVector<std::byte>(fuzzed_data_provider), + }; + LIMITED_WHILE(fuzzed_data_provider.ConsumeBool(), 100) + { CallOneOf( fuzzed_data_provider, [&] { diff --git a/src/test/fuzz/buffered_file.cpp b/src/test/fuzz/buffered_file.cpp index 636f11b381..813af63738 100644 --- a/src/test/fuzz/buffered_file.cpp +++ b/src/test/fuzz/buffered_file.cpp @@ -2,31 +2,37 @@ // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. +#include <span.h> #include <streams.h> #include <test/fuzz/FuzzedDataProvider.h> #include <test/fuzz/fuzz.h> #include <test/fuzz/util.h> #include <array> +#include <cstddef> #include <cstdint> #include <iostream> #include <optional> -#include <string> #include <vector> FUZZ_TARGET(buffered_file) { FuzzedDataProvider fuzzed_data_provider{buffer.data(), buffer.size()}; - FuzzedFileProvider fuzzed_file_provider = ConsumeFile(fuzzed_data_provider); + FuzzedFileProvider fuzzed_file_provider{fuzzed_data_provider}; std::optional<BufferedFile> opt_buffered_file; - CAutoFile fuzzed_file{fuzzed_file_provider.open(), 0}; + CAutoFile fuzzed_file{ + fuzzed_file_provider.open(), + 0, + ConsumeRandomLengthByteVector<std::byte>(fuzzed_data_provider), + }; try { opt_buffered_file.emplace(fuzzed_file, fuzzed_data_provider.ConsumeIntegralInRange<uint64_t>(0, 4096), fuzzed_data_provider.ConsumeIntegralInRange<uint64_t>(0, 4096)); } catch (const std::ios_base::failure&) { } if (opt_buffered_file && !fuzzed_file.IsNull()) { bool setpos_fail = false; - LIMITED_WHILE(fuzzed_data_provider.ConsumeBool(), 10000) { + LIMITED_WHILE(fuzzed_data_provider.ConsumeBool(), 100) + { CallOneOf( fuzzed_data_provider, [&] { diff --git a/src/test/fuzz/load_external_block_file.cpp b/src/test/fuzz/load_external_block_file.cpp index fc903e5ec2..ae4f5d089b 100644 --- a/src/test/fuzz/load_external_block_file.cpp +++ b/src/test/fuzz/load_external_block_file.cpp @@ -27,7 +27,7 @@ void initialize_load_external_block_file() FUZZ_TARGET(load_external_block_file, .init = initialize_load_external_block_file) { FuzzedDataProvider fuzzed_data_provider{buffer.data(), buffer.size()}; - FuzzedFileProvider fuzzed_file_provider = ConsumeFile(fuzzed_data_provider); + FuzzedFileProvider fuzzed_file_provider{fuzzed_data_provider}; CAutoFile fuzzed_block_file{fuzzed_file_provider.open(), CLIENT_VERSION}; if (fuzzed_block_file.IsNull()) { return; diff --git a/src/test/fuzz/policy_estimator.cpp b/src/test/fuzz/policy_estimator.cpp index a6275d2fd2..220799be41 100644 --- a/src/test/fuzz/policy_estimator.cpp +++ b/src/test/fuzz/policy_estimator.cpp @@ -13,6 +13,7 @@ #include <test/fuzz/util/mempool.h> #include <test/util/setup_common.h> +#include <memory> #include <optional> #include <vector> @@ -81,8 +82,8 @@ FUZZ_TARGET(policy_estimator, .init = initialize_policy_estimator) (void)block_policy_estimator.HighestTargetTracked(fuzzed_data_provider.PickValueInArray(ALL_FEE_ESTIMATE_HORIZONS)); } { - FuzzedAutoFileProvider fuzzed_auto_file_provider = ConsumeAutoFile(fuzzed_data_provider); - AutoFile fuzzed_auto_file{fuzzed_auto_file_provider.open()}; + FuzzedFileProvider fuzzed_file_provider{fuzzed_data_provider}; + AutoFile fuzzed_auto_file{fuzzed_file_provider.open()}; block_policy_estimator.Write(fuzzed_auto_file); block_policy_estimator.Read(fuzzed_auto_file); } diff --git a/src/test/fuzz/policy_estimator_io.cpp b/src/test/fuzz/policy_estimator_io.cpp index c04ef8f5b0..3e7d093343 100644 --- a/src/test/fuzz/policy_estimator_io.cpp +++ b/src/test/fuzz/policy_estimator_io.cpp @@ -4,13 +4,13 @@ #include <policy/fees.h> #include <policy/fees_args.h> +#include <streams.h> #include <test/fuzz/FuzzedDataProvider.h> #include <test/fuzz/fuzz.h> #include <test/fuzz/util.h> #include <test/util/setup_common.h> -#include <cstdint> -#include <vector> +#include <memory> namespace { const BasicTestingSetup* g_setup; @@ -25,8 +25,8 @@ void initialize_policy_estimator_io() FUZZ_TARGET(policy_estimator_io, .init = initialize_policy_estimator_io) { FuzzedDataProvider fuzzed_data_provider(buffer.data(), buffer.size()); - FuzzedAutoFileProvider fuzzed_auto_file_provider = ConsumeAutoFile(fuzzed_data_provider); - AutoFile fuzzed_auto_file{fuzzed_auto_file_provider.open()}; + FuzzedFileProvider fuzzed_file_provider{fuzzed_data_provider}; + AutoFile fuzzed_auto_file{fuzzed_file_provider.open()}; // Re-using block_policy_estimator across runs to avoid costly creation of CBlockPolicyEstimator object. static CBlockPolicyEstimator block_policy_estimator{FeeestPath(*g_setup->m_node.args), DEFAULT_ACCEPT_STALE_FEE_ESTIMATES}; if (block_policy_estimator.Read(fuzzed_auto_file)) { diff --git a/src/test/fuzz/util.h b/src/test/fuzz/util.h index 95d910b64d..0ad2ed6128 100644 --- a/src/test/fuzz/util.h +++ b/src/test/fuzz/util.h @@ -263,31 +263,6 @@ public: static int close(void* cookie); }; -[[nodiscard]] inline FuzzedFileProvider ConsumeFile(FuzzedDataProvider& fuzzed_data_provider) noexcept -{ - return {fuzzed_data_provider}; -} - -class FuzzedAutoFileProvider -{ - FuzzedFileProvider m_fuzzed_file_provider; - -public: - FuzzedAutoFileProvider(FuzzedDataProvider& fuzzed_data_provider) : m_fuzzed_file_provider{fuzzed_data_provider} - { - } - - AutoFile open() - { - return AutoFile{m_fuzzed_file_provider.open()}; - } -}; - -[[nodiscard]] inline FuzzedAutoFileProvider ConsumeAutoFile(FuzzedDataProvider& fuzzed_data_provider) noexcept -{ - return {fuzzed_data_provider}; -} - #define WRITE_TO_STREAM_CASE(type, consume) \ [&] { \ type o = consume; \ diff --git a/src/test/fuzz/validation_load_mempool.cpp b/src/test/fuzz/validation_load_mempool.cpp index 5d020b4d59..00678742c9 100644 --- a/src/test/fuzz/validation_load_mempool.cpp +++ b/src/test/fuzz/validation_load_mempool.cpp @@ -38,7 +38,7 @@ FUZZ_TARGET(validation_load_mempool, .init = initialize_validation_load_mempool) { FuzzedDataProvider fuzzed_data_provider{buffer.data(), buffer.size()}; SetMockTime(ConsumeTime(fuzzed_data_provider)); - FuzzedFileProvider fuzzed_file_provider = ConsumeFile(fuzzed_data_provider); + FuzzedFileProvider fuzzed_file_provider{fuzzed_data_provider}; CTxMemPool pool{MemPoolOptionsForTest(g_setup->m_node)}; |