From 7e43bfa1fa6a6b6099699baf9819f9572d9e84d2 Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Fri, 10 Mar 2017 14:01:02 -0800 Subject: [PATCH 1/4] Fix fuzzing detected error --- .../transport/chttp2/transport/hpack_parser.c | 10 ++++++-- .../clusterfuzz-testcase-5298216461402112 | Bin 0 -> 172032 bytes tools/run_tests/generated/tests.json | 22 ++++++++++++++++++ 3 files changed, 30 insertions(+), 2 deletions(-) create mode 100644 test/core/transport/chttp2/hpack_parser_corpus/clusterfuzz-testcase-5298216461402112 diff --git a/src/core/ext/transport/chttp2/transport/hpack_parser.c b/src/core/ext/transport/chttp2/transport/hpack_parser.c index 40f5120308c..b2f364aa1a0 100644 --- a/src/core/ext/transport/chttp2/transport/hpack_parser.c +++ b/src/core/ext/transport/chttp2/transport/hpack_parser.c @@ -1625,8 +1625,14 @@ grpc_error *grpc_chttp2_hpack_parser_parse(grpc_exec_ctx *exec_ctx, stack space usage when no tail call optimization is available */ p->current_slice_refcount = slice.refcount; - grpc_error *error = p->state(exec_ctx, p, GRPC_SLICE_START_PTR(slice), - GRPC_SLICE_END_PTR(slice)); + uint8_t *start = GRPC_SLICE_START_PTR(slice); + uint8_t *end = GRPC_SLICE_END_PTR(slice); + grpc_error *error = GRPC_ERROR_NONE; + while (start != end && error == GRPC_ERROR_NONE) { + uint8_t *target = start + GPR_MIN(1024, end - start); + error = p->state(exec_ctx, p, start, target); + start = target; + } p->current_slice_refcount = NULL; return error; } diff --git a/test/core/transport/chttp2/hpack_parser_corpus/clusterfuzz-testcase-5298216461402112 b/test/core/transport/chttp2/hpack_parser_corpus/clusterfuzz-testcase-5298216461402112 new file mode 100644 index 0000000000000000000000000000000000000000..04d48d6d76f8bedfb6e708cb4e877791999dacef GIT binary patch literal 172032 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 literal 0 HcmV?d00001 diff --git a/tools/run_tests/generated/tests.json b/tools/run_tests/generated/tests.json index f9e2a19d0ef..8feab6ba496 100644 --- a/tools/run_tests/generated/tests.json +++ b/tools/run_tests/generated/tests.json @@ -114587,6 +114587,28 @@ ], "uses_polling": false }, + { + "args": [ + "test/core/transport/chttp2/hpack_parser_corpus/clusterfuzz-testcase-5298216461402112" + ], + "ci_platforms": [ + "linux" + ], + "cpu_cost": 0.1, + "exclude_configs": [ + "tsan" + ], + "exclude_iomgrs": [ + "uv" + ], + "flaky": false, + "language": "c", + "name": "hpack_parser_fuzzer_test_one_entry", + "platforms": [ + "linux" + ], + "uses_polling": false + }, { "args": [ "test/core/transport/chttp2/hpack_parser_corpus/crash-5ac3e1ea7764cfb6383629574262f82dc7b3cada" From c04faa8c03f37f71cdc1ee65c3291a78a928341f Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Fri, 10 Mar 2017 14:01:51 -0800 Subject: [PATCH 2/4] Update comment --- src/core/ext/transport/chttp2/transport/hpack_parser.c | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/core/ext/transport/chttp2/transport/hpack_parser.c b/src/core/ext/transport/chttp2/transport/hpack_parser.c index b2f364aa1a0..e26ab87ca7e 100644 --- a/src/core/ext/transport/chttp2/transport/hpack_parser.c +++ b/src/core/ext/transport/chttp2/transport/hpack_parser.c @@ -1620,10 +1620,6 @@ void grpc_chttp2_hpack_parser_destroy(grpc_exec_ctx *exec_ctx, grpc_error *grpc_chttp2_hpack_parser_parse(grpc_exec_ctx *exec_ctx, grpc_chttp2_hpack_parser *p, grpc_slice slice) { - /* TODO(ctiller): limit the distance of end from beg, and perform multiple - steps in the event of a large chunk of data to limit - stack space usage when no tail call optimization is - available */ p->current_slice_refcount = slice.refcount; uint8_t *start = GRPC_SLICE_START_PTR(slice); uint8_t *end = GRPC_SLICE_END_PTR(slice); From e9c83c566c5b193c856a14c86e5a150b2925cc86 Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Fri, 10 Mar 2017 14:12:07 -0800 Subject: [PATCH 3/4] readability --- src/core/ext/transport/chttp2/transport/hpack_parser.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/core/ext/transport/chttp2/transport/hpack_parser.c b/src/core/ext/transport/chttp2/transport/hpack_parser.c index e26ab87ca7e..d94f66001d8 100644 --- a/src/core/ext/transport/chttp2/transport/hpack_parser.c +++ b/src/core/ext/transport/chttp2/transport/hpack_parser.c @@ -1620,12 +1620,15 @@ void grpc_chttp2_hpack_parser_destroy(grpc_exec_ctx *exec_ctx, grpc_error *grpc_chttp2_hpack_parser_parse(grpc_exec_ctx *exec_ctx, grpc_chttp2_hpack_parser *p, grpc_slice slice) { + /* max number of bytes to parse at a time... limits call stack depth on + * compilers without TCO */ + const size_t max_parse_length = 1024; p->current_slice_refcount = slice.refcount; uint8_t *start = GRPC_SLICE_START_PTR(slice); uint8_t *end = GRPC_SLICE_END_PTR(slice); grpc_error *error = GRPC_ERROR_NONE; while (start != end && error == GRPC_ERROR_NONE) { - uint8_t *target = start + GPR_MIN(1024, end - start); + uint8_t *target = start + GPR_MIN(max_parse_length, end - start); error = p->state(exec_ctx, p, start, target); start = target; } From d9dd625f6080577abf31c4f8fe4f869ba0d6a233 Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Mon, 13 Mar 2017 08:31:35 -0700 Subject: [PATCH 4/4] Fix compile error --- src/core/ext/transport/chttp2/transport/hpack_parser.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/core/ext/transport/chttp2/transport/hpack_parser.c b/src/core/ext/transport/chttp2/transport/hpack_parser.c index d94f66001d8..1865b997b7d 100644 --- a/src/core/ext/transport/chttp2/transport/hpack_parser.c +++ b/src/core/ext/transport/chttp2/transport/hpack_parser.c @@ -1620,15 +1620,15 @@ void grpc_chttp2_hpack_parser_destroy(grpc_exec_ctx *exec_ctx, grpc_error *grpc_chttp2_hpack_parser_parse(grpc_exec_ctx *exec_ctx, grpc_chttp2_hpack_parser *p, grpc_slice slice) { - /* max number of bytes to parse at a time... limits call stack depth on - * compilers without TCO */ - const size_t max_parse_length = 1024; +/* max number of bytes to parse at a time... limits call stack depth on + * compilers without TCO */ +#define MAX_PARSE_LENGTH 1024 p->current_slice_refcount = slice.refcount; uint8_t *start = GRPC_SLICE_START_PTR(slice); uint8_t *end = GRPC_SLICE_END_PTR(slice); grpc_error *error = GRPC_ERROR_NONE; while (start != end && error == GRPC_ERROR_NONE) { - uint8_t *target = start + GPR_MIN(max_parse_length, end - start); + uint8_t *target = start + GPR_MIN(MAX_PARSE_LENGTH, end - start); error = p->state(exec_ctx, p, start, target); start = target; }