File tree 3 files changed +59
-0
lines changed
message_reader_fuzz_test_corpus
3 files changed +59
-0
lines changed Original file line number Diff line number Diff line change @@ -225,6 +225,19 @@ cc_test(
225
225
],
226
226
)
227
227
228
+ cc_fuzz_test (
229
+ name = "message_reader_fuzz_test" ,
230
+ testonly = 1 ,
231
+ srcs = [
232
+ "message_reader_fuzz_test.cc" ,
233
+ ],
234
+ corpus = glob (["message_reader_fuzz_test_corpus/**" ]),
235
+ deps = [
236
+ ":test_common" ,
237
+ "//src:message_reader" ,
238
+ ],
239
+ )
240
+
228
241
cc_test (
229
242
name = "response_to_json_translator_test" ,
230
243
size = "small" ,
Original file line number Diff line number Diff line change
1
+ #include " grpc_transcoding/message_reader.h"
2
+
3
+ #include " test_common.h"
4
+
5
+ #include < fuzzer/FuzzedDataProvider.h>
6
+ #include < cstdint>
7
+ #include < cstddef>
8
+ #include < string>
9
+
10
+ namespace google {
11
+ namespace grpc {
12
+ namespace transcoding {
13
+ namespace testing {
14
+ namespace {
15
+
16
+ extern " C" int LLVMFuzzerTestOneInput (const uint8_t * data, size_t size) {
17
+ FuzzedDataProvider provider (data, size);
18
+
19
+ TestZeroCopyInputStream input_stream;
20
+ MessageReader reader (&input_stream);
21
+
22
+ while (provider.remaining_bytes () > 0 ) {
23
+
24
+ // Add a few chucks of data to the input stream.
25
+ for (int i = 0 ; i < provider.ConsumeIntegralInRange (0 , 5 ); i++) {
26
+ input_stream.AddChunk (provider.ConsumeRandomLengthString (100 ));
27
+ }
28
+
29
+ // Run the message reader to get the next message.
30
+ (void ) reader.NextMessageAndGrpcFrame ();
31
+
32
+ // Handle end of input or error due to malformed bytes.
33
+ if (reader.Finished ()) {
34
+ return 0 ;
35
+ }
36
+ }
37
+
38
+ return 0 ;
39
+ }
40
+
41
+ }
42
+ }
43
+ }
44
+ }
45
+ }
Original file line number Diff line number Diff line change
1
+ 1\0\0\0\0a2830232
You can’t perform that action at this time.
0 commit comments