diff options
author | Esun Kim <veblush@google.com> | 2019-09-24 23:06:59 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-09-24 23:06:59 -0700 |
commit | a457431e5f64a45306268be8d10ef98b8610dbff (patch) | |
tree | e04d03f4f0fb2cf921c0f8847c5e0a951d055899 | |
parent | 7e6d9901174ab23fa18eca2fec2bfcf5cee396a8 (diff) | |
parent | 673e0cec336f5dfa2a1ba0015eacc0c69f0fae63 (diff) | |
download | grpc-grpc-a457431e5f64a45306268be8d10ef98b8610dbff.tar.gz |
Merge pull request #20361 from veblush/1.24.x-fix
Backport "fix"
-rw-r--r-- | src/core/lib/surface/server.cc | 4 | ||||
-rw-r--r-- | test/core/end2end/fuzzers/server_fuzzer.cc | 5 | ||||
-rw-r--r-- | test/core/end2end/fuzzers/server_fuzzer_corpus/hope.bin | bin | 0 -> 407 bytes | |||
-rw-r--r-- | tools/run_tests/generated/tests.json | 23 |
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 Binary files differnew file mode 100644 index 0000000000..46dd621951 --- /dev/null +++ b/test/core/end2end/fuzzers/server_fuzzer_corpus/hope.bin 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": [ |