aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEsun Kim <veblush@google.com>2019-09-24 23:06:59 -0700
committerGitHub <noreply@github.com>2019-09-24 23:06:59 -0700
commita457431e5f64a45306268be8d10ef98b8610dbff (patch)
treee04d03f4f0fb2cf921c0f8847c5e0a951d055899
parent7e6d9901174ab23fa18eca2fec2bfcf5cee396a8 (diff)
parent673e0cec336f5dfa2a1ba0015eacc0c69f0fae63 (diff)
downloadgrpc-grpc-a457431e5f64a45306268be8d10ef98b8610dbff.tar.gz
Merge pull request #20361 from veblush/1.24.x-fix
Backport "fix"
-rw-r--r--src/core/lib/surface/server.cc4
-rw-r--r--test/core/end2end/fuzzers/server_fuzzer.cc5
-rw-r--r--test/core/end2end/fuzzers/server_fuzzer_corpus/hope.binbin0 -> 407 bytes
-rw-r--r--tools/run_tests/generated/tests.json23
4 files changed, 27 insertions, 5 deletions
diff --git a/src/core/lib/surface/server.cc b/src/core/lib/surface/server.cc
index 2cc7e88cab..087574f218 100644
--- a/src/core/lib/surface/server.cc
+++ b/src/core/lib/surface/server.cc
@@ -629,7 +629,7 @@ static void start_new_rpc(grpc_call_element* elem) {
for (i = 0; i <= chand->registered_method_max_probes; i++) {
rm = &chand->registered_methods[(hash + i) %
chand->registered_method_slots];
- if (!rm) break;
+ if (rm->server_registered_method == nullptr) break;
if (!rm->has_host) continue;
if (!grpc_slice_eq(rm->host, calld->host)) continue;
if (!grpc_slice_eq(rm->method, calld->path)) continue;
@@ -647,7 +647,7 @@ static void start_new_rpc(grpc_call_element* elem) {
for (i = 0; i <= chand->registered_method_max_probes; i++) {
rm = &chand->registered_methods[(hash + i) %
chand->registered_method_slots];
- if (!rm) break;
+ if (rm->server_registered_method == nullptr) break;
if (rm->has_host) continue;
if (!grpc_slice_eq(rm->method, calld->path)) continue;
if ((rm->flags & GRPC_INITIAL_METADATA_IDEMPOTENT_REQUEST) &&
diff --git a/test/core/end2end/fuzzers/server_fuzzer.cc b/test/core/end2end/fuzzers/server_fuzzer.cc
index 130b58f629..031db87dc2 100644
--- a/test/core/end2end/fuzzers/server_fuzzer.cc
+++ b/test/core/end2end/fuzzers/server_fuzzer.cc
@@ -57,9 +57,8 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
grpc_server* server = grpc_server_create(nullptr, nullptr);
grpc_completion_queue* cq = grpc_completion_queue_create_for_next(nullptr);
grpc_server_register_completion_queue(server, cq, nullptr);
- // TODO(ctiller): add registered methods (one for POST, one for PUT)
- // void *registered_method =
- // grpc_server_register_method(server, "/reg", NULL, 0);
+ // TODO(ctiller): add more registered methods (one for POST, one for PUT)
+ grpc_server_register_method(server, "/reg", nullptr, {}, 0);
grpc_server_start(server);
grpc_transport* transport =
grpc_create_chttp2_transport(nullptr, mock_endpoint, false);
diff --git a/test/core/end2end/fuzzers/server_fuzzer_corpus/hope.bin b/test/core/end2end/fuzzers/server_fuzzer_corpus/hope.bin
new file mode 100644
index 0000000000..46dd621951
--- /dev/null
+++ b/test/core/end2end/fuzzers/server_fuzzer_corpus/hope.bin
Binary files differ
diff --git a/tools/run_tests/generated/tests.json b/tools/run_tests/generated/tests.json
index 8f0b447aba..1e8483c901 100644
--- a/tools/run_tests/generated/tests.json
+++ b/tools/run_tests/generated/tests.json
@@ -182348,6 +182348,29 @@
},
{
"args": [
+ "test/core/end2end/fuzzers/server_fuzzer_corpus/hope.bin"
+ ],
+ "ci_platforms": [
+ "linux"
+ ],
+ "cpu_cost": 0.1,
+ "exclude_configs": [
+ "tsan"
+ ],
+ "exclude_iomgrs": [
+ "uv"
+ ],
+ "flaky": false,
+ "language": "c",
+ "name": "server_fuzzer_one_entry",
+ "platforms": [
+ "mac",
+ "linux"
+ ],
+ "uses_polling": false
+ },
+ {
+ "args": [
"test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-0292270056246b7a4ccd2e7d0356665cef307ef2"
],
"ci_platforms": [