MCPcopy Create free account
hub / github.com/ElementsProject/elements / FUZZ_TARGET

Function FUZZ_TARGET

src/test/fuzz/buffered_file.cpp:17–68  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

15#include <vector>
16
17FUZZ_TARGET(buffered_file)
18{
19 FuzzedDataProvider fuzzed_data_provider{buffer.data(), buffer.size()};
20 FuzzedFileProvider fuzzed_file_provider = ConsumeFile(fuzzed_data_provider);
21 std::optional<CBufferedFile> opt_buffered_file;
22 FILE* fuzzed_file = fuzzed_file_provider.open();
23 try {
24 opt_buffered_file.emplace(fuzzed_file, fuzzed_data_provider.ConsumeIntegralInRange<uint64_t>(0, 4096), fuzzed_data_provider.ConsumeIntegralInRange<uint64_t>(0, 4096), fuzzed_data_provider.ConsumeIntegral<int>(), fuzzed_data_provider.ConsumeIntegral<int>());
25 } catch (const std::ios_base::failure&) {
26 if (fuzzed_file != nullptr) {
27 fclose(fuzzed_file);
28 }
29 }
30 if (opt_buffered_file && fuzzed_file != nullptr) {
31 bool setpos_fail = false;
32 LIMITED_WHILE(fuzzed_data_provider.ConsumeBool(), 10000) {
33 CallOneOf(
34 fuzzed_data_provider,
35 [&] {
36 std::array<std::byte, 4096> arr{};
37 try {
38 opt_buffered_file->read({arr.data(), fuzzed_data_provider.ConsumeIntegralInRange<size_t>(0, 4096)});
39 } catch (const std::ios_base::failure&) {
40 }
41 },
42 [&] {
43 opt_buffered_file->SetLimit(fuzzed_data_provider.ConsumeIntegralInRange<uint64_t>(0, 4096));
44 },
45 [&] {
46 if (!opt_buffered_file->SetPos(fuzzed_data_provider.ConsumeIntegralInRange<uint64_t>(0, 4096))) {
47 setpos_fail = true;
48 }
49 },
50 [&] {
51 if (setpos_fail) {
52 // Calling FindByte(...) after a failed SetPos(...) call may result in an infinite loop.
53 return;
54 }
55 try {
56 opt_buffered_file->FindByte(fuzzed_data_provider.ConsumeIntegral<uint8_t>());
57 } catch (const std::ios_base::failure&) {
58 }
59 },
60 [&] {
61 ReadFromStream(fuzzed_data_provider, *opt_buffered_file);
62 });
63 }
64 opt_buffered_file->GetPos();
65 opt_buffered_file->GetType();
66 opt_buffered_file->GetVersion();
67 }
68}

Callers

nothing calls this directly

Calls 14

ConsumeFileFunction · 0.85
CallOneOfFunction · 0.85
ReadFromStreamFunction · 0.85
ConsumeBoolMethod · 0.80
SetLimitMethod · 0.80
SetPosMethod · 0.80
FindByteMethod · 0.80
GetPosMethod · 0.80
dataMethod · 0.45
sizeMethod · 0.45
openMethod · 0.45
readMethod · 0.45

Tested by

no test coverage detected