File tree Expand file tree Collapse file tree 3 files changed +59
-0
lines changed
message_reader_fuzz_test_corpus Expand file tree Collapse file tree 3 files changed +59
-0
lines changed Original file line number Diff line number Diff line change @@ -225,6 +225,19 @@ cc_test(
225225 ],
226226)
227227
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+
228241cc_test (
229242 name = "response_to_json_translator_test" ,
230243 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