Skip to content

Commit afd3e99

Browse files
committed
Merge bitcoin/bitcoin#28873: fuzz: AutoFile with XOR
faa2571 fuzz: AutoFile with XOR (MarcoFalke) fab5cb9 fuzz: Reduce LIMITED_WHILE limit for file fuzzing (MarcoFalke) fa5388f 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 faa2571 Tree-SHA512: 56f1e6fd5cb2b66ffd9a7d9c09c9b8e396be3e7485feb03b35b6bd3c48e624fdaed50b472e4ffec21f09efb5e949d7ee32a13851849c9140b6b4cf25917dd7ac
2 parents 22025d0 + faa2571 commit afd3e99

File tree

7 files changed

+29
-43
lines changed

7 files changed

+29
-43
lines changed

src/test/fuzz/autofile.cpp

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,24 +2,28 @@
22
// Distributed under the MIT software license, see the accompanying
33
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
44

5+
#include <span.h>
56
#include <streams.h>
67
#include <test/fuzz/FuzzedDataProvider.h>
78
#include <test/fuzz/fuzz.h>
89
#include <test/fuzz/util.h>
910

1011
#include <array>
11-
#include <cstdint>
12+
#include <cstddef>
13+
#include <cstdio>
1214
#include <iostream>
13-
#include <optional>
14-
#include <string>
1515
#include <vector>
1616

1717
FUZZ_TARGET(autofile)
1818
{
1919
FuzzedDataProvider fuzzed_data_provider{buffer.data(), buffer.size()};
20-
FuzzedAutoFileProvider fuzzed_auto_file_provider = ConsumeAutoFile(fuzzed_data_provider);
21-
AutoFile auto_file{fuzzed_auto_file_provider.open()};
22-
LIMITED_WHILE(fuzzed_data_provider.ConsumeBool(), 10000) {
20+
FuzzedFileProvider fuzzed_file_provider{fuzzed_data_provider};
21+
AutoFile auto_file{
22+
fuzzed_file_provider.open(),
23+
ConsumeRandomLengthByteVector<std::byte>(fuzzed_data_provider),
24+
};
25+
LIMITED_WHILE(fuzzed_data_provider.ConsumeBool(), 100)
26+
{
2327
CallOneOf(
2428
fuzzed_data_provider,
2529
[&] {

src/test/fuzz/buffered_file.cpp

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,31 +2,37 @@
22
// Distributed under the MIT software license, see the accompanying
33
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
44

5+
#include <span.h>
56
#include <streams.h>
67
#include <test/fuzz/FuzzedDataProvider.h>
78
#include <test/fuzz/fuzz.h>
89
#include <test/fuzz/util.h>
910

1011
#include <array>
12+
#include <cstddef>
1113
#include <cstdint>
1214
#include <iostream>
1315
#include <optional>
14-
#include <string>
1516
#include <vector>
1617

1718
FUZZ_TARGET(buffered_file)
1819
{
1920
FuzzedDataProvider fuzzed_data_provider{buffer.data(), buffer.size()};
20-
FuzzedFileProvider fuzzed_file_provider = ConsumeFile(fuzzed_data_provider);
21+
FuzzedFileProvider fuzzed_file_provider{fuzzed_data_provider};
2122
std::optional<BufferedFile> opt_buffered_file;
22-
CAutoFile fuzzed_file{fuzzed_file_provider.open(), 0};
23+
CAutoFile fuzzed_file{
24+
fuzzed_file_provider.open(),
25+
0,
26+
ConsumeRandomLengthByteVector<std::byte>(fuzzed_data_provider),
27+
};
2328
try {
2429
opt_buffered_file.emplace(fuzzed_file, fuzzed_data_provider.ConsumeIntegralInRange<uint64_t>(0, 4096), fuzzed_data_provider.ConsumeIntegralInRange<uint64_t>(0, 4096));
2530
} catch (const std::ios_base::failure&) {
2631
}
2732
if (opt_buffered_file && !fuzzed_file.IsNull()) {
2833
bool setpos_fail = false;
29-
LIMITED_WHILE(fuzzed_data_provider.ConsumeBool(), 10000) {
34+
LIMITED_WHILE(fuzzed_data_provider.ConsumeBool(), 100)
35+
{
3036
CallOneOf(
3137
fuzzed_data_provider,
3238
[&] {

src/test/fuzz/load_external_block_file.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ void initialize_load_external_block_file()
2727
FUZZ_TARGET(load_external_block_file, .init = initialize_load_external_block_file)
2828
{
2929
FuzzedDataProvider fuzzed_data_provider{buffer.data(), buffer.size()};
30-
FuzzedFileProvider fuzzed_file_provider = ConsumeFile(fuzzed_data_provider);
30+
FuzzedFileProvider fuzzed_file_provider{fuzzed_data_provider};
3131
CAutoFile fuzzed_block_file{fuzzed_file_provider.open(), CLIENT_VERSION};
3232
if (fuzzed_block_file.IsNull()) {
3333
return;

src/test/fuzz/policy_estimator.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
#include <test/fuzz/util/mempool.h>
1414
#include <test/util/setup_common.h>
1515

16+
#include <memory>
1617
#include <optional>
1718
#include <vector>
1819

@@ -81,8 +82,8 @@ FUZZ_TARGET(policy_estimator, .init = initialize_policy_estimator)
8182
(void)block_policy_estimator.HighestTargetTracked(fuzzed_data_provider.PickValueInArray(ALL_FEE_ESTIMATE_HORIZONS));
8283
}
8384
{
84-
FuzzedAutoFileProvider fuzzed_auto_file_provider = ConsumeAutoFile(fuzzed_data_provider);
85-
AutoFile fuzzed_auto_file{fuzzed_auto_file_provider.open()};
85+
FuzzedFileProvider fuzzed_file_provider{fuzzed_data_provider};
86+
AutoFile fuzzed_auto_file{fuzzed_file_provider.open()};
8687
block_policy_estimator.Write(fuzzed_auto_file);
8788
block_policy_estimator.Read(fuzzed_auto_file);
8889
}

src/test/fuzz/policy_estimator_io.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,13 @@
44

55
#include <policy/fees.h>
66
#include <policy/fees_args.h>
7+
#include <streams.h>
78
#include <test/fuzz/FuzzedDataProvider.h>
89
#include <test/fuzz/fuzz.h>
910
#include <test/fuzz/util.h>
1011
#include <test/util/setup_common.h>
1112

12-
#include <cstdint>
13-
#include <vector>
13+
#include <memory>
1414

1515
namespace {
1616
const BasicTestingSetup* g_setup;
@@ -25,8 +25,8 @@ void initialize_policy_estimator_io()
2525
FUZZ_TARGET(policy_estimator_io, .init = initialize_policy_estimator_io)
2626
{
2727
FuzzedDataProvider fuzzed_data_provider(buffer.data(), buffer.size());
28-
FuzzedAutoFileProvider fuzzed_auto_file_provider = ConsumeAutoFile(fuzzed_data_provider);
29-
AutoFile fuzzed_auto_file{fuzzed_auto_file_provider.open()};
28+
FuzzedFileProvider fuzzed_file_provider{fuzzed_data_provider};
29+
AutoFile fuzzed_auto_file{fuzzed_file_provider.open()};
3030
// Re-using block_policy_estimator across runs to avoid costly creation of CBlockPolicyEstimator object.
3131
static CBlockPolicyEstimator block_policy_estimator{FeeestPath(*g_setup->m_node.args), DEFAULT_ACCEPT_STALE_FEE_ESTIMATES};
3232
if (block_policy_estimator.Read(fuzzed_auto_file)) {

src/test/fuzz/util.h

Lines changed: 0 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -263,31 +263,6 @@ class FuzzedFileProvider
263263
static int close(void* cookie);
264264
};
265265

266-
[[nodiscard]] inline FuzzedFileProvider ConsumeFile(FuzzedDataProvider& fuzzed_data_provider) noexcept
267-
{
268-
return {fuzzed_data_provider};
269-
}
270-
271-
class FuzzedAutoFileProvider
272-
{
273-
FuzzedFileProvider m_fuzzed_file_provider;
274-
275-
public:
276-
FuzzedAutoFileProvider(FuzzedDataProvider& fuzzed_data_provider) : m_fuzzed_file_provider{fuzzed_data_provider}
277-
{
278-
}
279-
280-
AutoFile open()
281-
{
282-
return AutoFile{m_fuzzed_file_provider.open()};
283-
}
284-
};
285-
286-
[[nodiscard]] inline FuzzedAutoFileProvider ConsumeAutoFile(FuzzedDataProvider& fuzzed_data_provider) noexcept
287-
{
288-
return {fuzzed_data_provider};
289-
}
290-
291266
#define WRITE_TO_STREAM_CASE(type, consume) \
292267
[&] { \
293268
type o = consume; \

src/test/fuzz/validation_load_mempool.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ FUZZ_TARGET(validation_load_mempool, .init = initialize_validation_load_mempool)
3838
{
3939
FuzzedDataProvider fuzzed_data_provider{buffer.data(), buffer.size()};
4040
SetMockTime(ConsumeTime(fuzzed_data_provider));
41-
FuzzedFileProvider fuzzed_file_provider = ConsumeFile(fuzzed_data_provider);
41+
FuzzedFileProvider fuzzed_file_provider{fuzzed_data_provider};
4242

4343
CTxMemPool pool{MemPoolOptionsForTest(g_setup->m_node)};
4444

0 commit comments

Comments
 (0)