File tree Expand file tree Collapse file tree 1 file changed +16
-2
lines changed Expand file tree Collapse file tree 1 file changed +16
-2
lines changed Original file line number Diff line number Diff line change @@ -29,8 +29,9 @@ void test_one_input(const std::vector<uint8_t>& buffer)
29
29
}
30
30
}
31
31
if (opt_buffered_file && fuzzed_file != nullptr ) {
32
+ bool setpos_fail = false ;
32
33
while (fuzzed_data_provider.ConsumeBool ()) {
33
- switch (fuzzed_data_provider.ConsumeIntegralInRange <int >(0 , 4 )) {
34
+ switch (fuzzed_data_provider.ConsumeIntegralInRange <int >(0 , 5 )) {
34
35
case 0 : {
35
36
std::array<uint8_t , 4096 > arr{};
36
37
try {
@@ -48,17 +49,30 @@ void test_one_input(const std::vector<uint8_t>& buffer)
48
49
break ;
49
50
}
50
51
case 3 : {
52
+ if (!opt_buffered_file->SetPos (fuzzed_data_provider.ConsumeIntegralInRange <uint64_t >(0 , 4096 ))) {
53
+ setpos_fail = true ;
54
+ }
55
+ break ;
56
+ }
57
+ case 4 : {
58
+ if (setpos_fail) {
59
+ // Calling FindByte(...) after a failed SetPos(...) call may result in an infinite loop.
60
+ break ;
61
+ }
51
62
try {
52
63
opt_buffered_file->FindByte (fuzzed_data_provider.ConsumeIntegral <char >());
53
64
} catch (const std::ios_base::failure&) {
54
65
}
55
66
break ;
56
67
}
57
- case 4 : {
68
+ case 5 : {
58
69
ReadFromStream (fuzzed_data_provider, *opt_buffered_file);
59
70
break ;
60
71
}
61
72
}
62
73
}
74
+ opt_buffered_file->GetPos ();
75
+ opt_buffered_file->GetType ();
76
+ opt_buffered_file->GetVersion ();
63
77
}
64
78
}
You can’t perform that action at this time.
0 commit comments