From 3726c102671eaea0b35451e89636aac55390d54c Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Mon, 4 Apr 2016 20:46:26 -0700 Subject: [PATCH 1/7] Missed file --- tools/run_tests/tests.json | 110 +++++++++++++++++++++++++++++++++++++ 1 file changed, 110 insertions(+) diff --git a/tools/run_tests/tests.json b/tools/run_tests/tests.json index 25fe5fd3e32..f3887ffc15e 100644 --- a/tools/run_tests/tests.json +++ b/tools/run_tests/tests.json @@ -39743,6 +39743,28 @@ "posix" ] }, + { + "args": [ + "test/core/end2end/fuzzers/server_fuzzer_corpus/2f3b1cd6780fe475f76f17e9e36541963d993165" + ], + "ci_platforms": [ + "linux", + "mac", + "windows", + "posix" + ], + "cpu_cost": 0.1, + "exclude_configs": [], + "flaky": false, + "language": "c", + "name": "server_fuzzer_one_entry", + "platforms": [ + "linux", + "mac", + "windows", + "posix" + ] + }, { "args": [ "test/core/end2end/fuzzers/server_fuzzer_corpus/2fb017cd4c34f4af183d03c4a219d2bb36ee2dd6" @@ -40513,6 +40535,28 @@ "posix" ] }, + { + "args": [ + "test/core/end2end/fuzzers/server_fuzzer_corpus/4b7bcb4ae6c0222a1a24d1fb1a5d96519750ca5e" + ], + "ci_platforms": [ + "linux", + "mac", + "windows", + "posix" + ], + "cpu_cost": 0.1, + "exclude_configs": [], + "flaky": false, + "language": "c", + "name": "server_fuzzer_one_entry", + "platforms": [ + "linux", + "mac", + "windows", + "posix" + ] + }, { "args": [ "test/core/end2end/fuzzers/server_fuzzer_corpus/4c412cc1a775cea041fa270483d610afb72f463b" @@ -42911,6 +42955,28 @@ "posix" ] }, + { + "args": [ + "test/core/end2end/fuzzers/server_fuzzer_corpus/b7ce4a4f6eea20c0b83d9f7fa8406a0730ee0040" + ], + "ci_platforms": [ + "linux", + "mac", + "windows", + "posix" + ], + "cpu_cost": 0.1, + "exclude_configs": [], + "flaky": false, + "language": "c", + "name": "server_fuzzer_one_entry", + "platforms": [ + "linux", + "mac", + "windows", + "posix" + ] + }, { "args": [ "test/core/end2end/fuzzers/server_fuzzer_corpus/b829143b.bin" @@ -44143,6 +44209,28 @@ "posix" ] }, + { + "args": [ + "test/core/end2end/fuzzers/server_fuzzer_corpus/f5424a9d7bd14317b6de7b15587df28bfde8362d" + ], + "ci_platforms": [ + "linux", + "mac", + "windows", + "posix" + ], + "cpu_cost": 0.1, + "exclude_configs": [], + "flaky": false, + "language": "c", + "name": "server_fuzzer_one_entry", + "platforms": [ + "linux", + "mac", + "windows", + "posix" + ] + }, { "args": [ "test/core/end2end/fuzzers/server_fuzzer_corpus/f5c877c4.bin" @@ -44319,6 +44407,28 @@ "posix" ] }, + { + "args": [ + "test/core/end2end/fuzzers/server_fuzzer_corpus/fd14bea45ecaf13af0053900edb2f17b71a0bf09" + ], + "ci_platforms": [ + "linux", + "mac", + "windows", + "posix" + ], + "cpu_cost": 0.1, + "exclude_configs": [], + "flaky": false, + "language": "c", + "name": "server_fuzzer_one_entry", + "platforms": [ + "linux", + "mac", + "windows", + "posix" + ] + }, { "args": [ "test/core/end2end/fuzzers/server_fuzzer_corpus/fd26e0a6.bin" From 9cac2a12d9e181d130841092e9d40fa3309d7aa7 Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Mon, 4 Apr 2016 20:56:56 -0700 Subject: [PATCH 2/7] Fix memory leak (I think) --- src/core/lib/surface/server.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/core/lib/surface/server.c b/src/core/lib/surface/server.c index 37cc2bd101d..ad8ee8c7a99 100644 --- a/src/core/lib/surface/server.c +++ b/src/core/lib/surface/server.c @@ -685,10 +685,14 @@ static grpc_mdelem *server_filter(void *user_data, grpc_mdelem *md) { grpc_call_element *elem = user_data; call_data *calld = elem->call_data; if (md->key == GRPC_MDSTR_PATH) { - calld->path = GRPC_MDSTR_REF(md->value); + if (calld->path == NULL) { + calld->path = GRPC_MDSTR_REF(md->value); + } return NULL; } else if (md->key == GRPC_MDSTR_AUTHORITY) { - calld->host = GRPC_MDSTR_REF(md->value); + if (calld->host == NULL) { + calld->host = GRPC_MDSTR_REF(md->value); + } return NULL; } return md; From 3693078650cb482a1de3927ca18c98266d110f81 Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Mon, 4 Apr 2016 20:57:53 -0700 Subject: [PATCH 3/7] Add handy debug --- src/core/lib/transport/metadata.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/core/lib/transport/metadata.c b/src/core/lib/transport/metadata.c index 2b1d32d55e6..3bf932d9037 100644 --- a/src/core/lib/transport/metadata.c +++ b/src/core/lib/transport/metadata.c @@ -242,6 +242,11 @@ void grpc_mdctx_global_shutdown(void) { if (shard->count != 0) { gpr_log(GPR_DEBUG, "WARNING: %d metadata strings were leaked", shard->count); + for (size_t j = 0; j < shard->capacity; j++) { + for (internal_string *s = shard->strs[j]; s; s = s->bucket_next) { + gpr_log(GPR_DEBUG, "LEAKED: %s", grpc_mdstr_as_c_string((grpc_mdstr*)s)); + } + } if (grpc_iomgr_abort_on_leaks()) { abort(); } From 7a6f60e564b36548e5a51dc4c97bec36738770f7 Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Mon, 4 Apr 2016 20:59:02 -0700 Subject: [PATCH 4/7] More controllable squelching --- test/core/end2end/fuzzers/server_fuzzer.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/test/core/end2end/fuzzers/server_fuzzer.c b/test/core/end2end/fuzzers/server_fuzzer.c index 2d590a3e0f5..393d33033ba 100644 --- a/test/core/end2end/fuzzers/server_fuzzer.c +++ b/test/core/end2end/fuzzers/server_fuzzer.c @@ -37,6 +37,8 @@ #include "src/core/lib/surface/server.h" #include "test/core/util/mock_endpoint.h" +static const bool squelch = true; + static void discard_write(gpr_slice slice) {} static void *tag(int n) { return (void *)(uintptr_t)n; } @@ -46,7 +48,7 @@ static void dont_log(gpr_log_func_args *args) {} int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { grpc_test_only_set_metadata_hash_seed(0); - gpr_set_log_function(dont_log); + if (squelch) gpr_set_log_function(dont_log); grpc_init(); grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; From 494efaf1227f425af992f97d02c1166a59f09b65 Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Mon, 4 Apr 2016 22:09:07 -0700 Subject: [PATCH 5/7] More corpus --- .../2b14c6e618ec95754ea7e24fe6bc5a3a97df6897 | Bin 0 -> 60 bytes .../c56fada76f5c198232201a608072a1a63e3d3785 | Bin 0 -> 60 bytes tools/run_tests/tests.json | 44 ++++++++++++++++++ 3 files changed, 44 insertions(+) create mode 100644 test/core/end2end/fuzzers/server_fuzzer_corpus/2b14c6e618ec95754ea7e24fe6bc5a3a97df6897 create mode 100644 test/core/end2end/fuzzers/server_fuzzer_corpus/c56fada76f5c198232201a608072a1a63e3d3785 diff --git a/test/core/end2end/fuzzers/server_fuzzer_corpus/2b14c6e618ec95754ea7e24fe6bc5a3a97df6897 b/test/core/end2end/fuzzers/server_fuzzer_corpus/2b14c6e618ec95754ea7e24fe6bc5a3a97df6897 new file mode 100644 index 0000000000000000000000000000000000000000..3c7963139602774d7da273298c3cc7e457271191 GIT binary patch literal 60 xcmWFt@>I}L@CXSB&^OXE;N{}w3ibt&3=9k`KnwI}L@CXSB&^OXE;N{}w3ibt&3=9k`Knw Date: Mon, 4 Apr 2016 22:10:25 -0700 Subject: [PATCH 6/7] clang-fmt --- src/core/lib/transport/metadata.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/core/lib/transport/metadata.c b/src/core/lib/transport/metadata.c index 3bf932d9037..d037c61d726 100644 --- a/src/core/lib/transport/metadata.c +++ b/src/core/lib/transport/metadata.c @@ -244,7 +244,8 @@ void grpc_mdctx_global_shutdown(void) { shard->count); for (size_t j = 0; j < shard->capacity; j++) { for (internal_string *s = shard->strs[j]; s; s = s->bucket_next) { - gpr_log(GPR_DEBUG, "LEAKED: %s", grpc_mdstr_as_c_string((grpc_mdstr*)s)); + gpr_log(GPR_DEBUG, "LEAKED: %s", + grpc_mdstr_as_c_string((grpc_mdstr *)s)); } } if (grpc_iomgr_abort_on_leaks()) { From c708f8a6812360256cd2afdc286781dd056ac4d0 Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Mon, 4 Apr 2016 22:13:15 -0700 Subject: [PATCH 7/7] Fix struct --- test/core/end2end/tests/filter_causes_close.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/test/core/end2end/tests/filter_causes_close.c b/test/core/end2end/tests/filter_causes_close.c index d4a9f6fac4a..ca54167b205 100644 --- a/test/core/end2end/tests/filter_causes_close.c +++ b/test/core/end2end/tests/filter_causes_close.c @@ -200,8 +200,7 @@ static void test_request(grpc_end2end_test_config config) { typedef struct { grpc_closure *recv_im_ready; } call_data; -typedef struct { -} channel_data; +typedef struct { uint8_t unused; } channel_data; static void recv_im_ready(grpc_exec_ctx *exec_ctx, void *arg, bool success) { grpc_call_element *elem = arg;