Skip to content

Commit a229c90

Browse files
authored
Merge branch 'master' into update-deps
2 parents 828a781 + 207b754 commit a229c90

File tree

3 files changed

+59
-0
lines changed

3 files changed

+59
-0
lines changed

test/BUILD

+13
Original file line numberDiff line numberDiff 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+
228241
cc_test(
229242
name = "response_to_json_translator_test",
230243
size = "small",

test/message_reader_fuzz_test.cc

+45
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
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 numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
1\0\0\0\0a2830232

0 commit comments

Comments
 (0)