aboutsummaryrefslogtreecommitdiff
path: root/src/test/fuzz
diff options
context:
space:
mode:
authorfanquake <fanquake@gmail.com>2023-11-17 10:07:47 +0000
committerfanquake <fanquake@gmail.com>2023-11-17 10:12:35 +0000
commitafd3e99856208d83bccfeb7bfbb0462f665b28e1 (patch)
tree857973012e6a2f560cf62c7218e919806b06ade3 /src/test/fuzz
parent22025d06e53f9bfccf88c600815f1cc496595d5d (diff)
parentfaa25718b3f11f24aa41f0968bbd4da104814bc5 (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.cpp16
-rw-r--r--src/test/fuzz/buffered_file.cpp14
-rw-r--r--src/test/fuzz/load_external_block_file.cpp2
-rw-r--r--src/test/fuzz/policy_estimator.cpp5
-rw-r--r--src/test/fuzz/policy_estimator_io.cpp8
-rw-r--r--src/test/fuzz/util.h25
-rw-r--r--src/test/fuzz/validation_load_mempool.cpp2
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)};