Merge pull request #8579 from ctiller/apifuzzit

Add resource quota configuration to API fuzzer
pull/8586/head^2
Craig Tiller 8 years ago committed by GitHub
commit 03a58cf387
  1. 4
      build.yaml
  2. 7
      src/core/lib/channel/http_server_filter.c
  3. 10
      src/core/lib/transport/metadata.c
  4. 59
      test/core/end2end/fuzzers/api_fuzzer.c
  5. BIN
      test/core/end2end/fuzzers/api_fuzzer_corpus/0077816beb340a2ef87cc57c18e0ce0d1e6e23fc
  6. BIN
      test/core/end2end/fuzzers/api_fuzzer_corpus/00a1b8e686014202baacdc052a38d392dff11432
  7. BIN
      test/core/end2end/fuzzers/api_fuzzer_corpus/00f89898cb8f3e3c20e7be1d8c7a1544fb81ea5e
  8. BIN
      test/core/end2end/fuzzers/api_fuzzer_corpus/0173fb5c52d97d0d63266a529bf2f6442894b0c6
  9. BIN
      test/core/end2end/fuzzers/api_fuzzer_corpus/020d06c319b6e511021d21316ba283bca9b40dc9
  10. BIN
      test/core/end2end/fuzzers/api_fuzzer_corpus/0598f8881c26b7e9562cdc4c3f86749dd49598d6
  11. BIN
      test/core/end2end/fuzzers/api_fuzzer_corpus/071b85ef412067e7db9188bee7c92e4fd661e021
  12. BIN
      test/core/end2end/fuzzers/api_fuzzer_corpus/077202f145bfc7dff77e820cbe6ac6e4ae76e1ed
  13. BIN
      test/core/end2end/fuzzers/api_fuzzer_corpus/07e7bbb0005535e901b7f50e13cba9d5da51c2a5
  14. BIN
      test/core/end2end/fuzzers/api_fuzzer_corpus/08a6761ed9d5298fc0d0fe9e75196f7527e488d4
  15. BIN
      test/core/end2end/fuzzers/api_fuzzer_corpus/092575ab527ffb459d2e1eed593902820bb462c0
  16. BIN
      test/core/end2end/fuzzers/api_fuzzer_corpus/09985e738bf04fb7827367f2ae70f4697ff5aaf0
  17. BIN
      test/core/end2end/fuzzers/api_fuzzer_corpus/0c10483d4f5018b899483bcf23094f9119919ca4
  18. BIN
      test/core/end2end/fuzzers/api_fuzzer_corpus/0c653a4b68bd77eec050b66ff2d8eae13001c505
  19. BIN
      test/core/end2end/fuzzers/api_fuzzer_corpus/0df8bd9c41fb5d8ce8a0f2f28ca16be96bd9997e
  20. BIN
      test/core/end2end/fuzzers/api_fuzzer_corpus/0f10d36e818e41f1737245c2bb8cb83a69421cb1
  21. BIN
      test/core/end2end/fuzzers/api_fuzzer_corpus/10ee46dc1973472ead36ec4b8a1ea90200637c73
  22. BIN
      test/core/end2end/fuzzers/api_fuzzer_corpus/140219fcde79e1de47129172abaef4e06e72534d
  23. BIN
      test/core/end2end/fuzzers/api_fuzzer_corpus/17381a0515458a92bc8248051b600da4020a1207
  24. BIN
      test/core/end2end/fuzzers/api_fuzzer_corpus/17647336806cf94a0224516f3d8caa22367c7c5a
  25. BIN
      test/core/end2end/fuzzers/api_fuzzer_corpus/1c1a1980a1959423766c5a26ac79d07264224278
  26. BIN
      test/core/end2end/fuzzers/api_fuzzer_corpus/1dd9698ad85c7ab577bbc9b36180ef2641d8525c
  27. BIN
      test/core/end2end/fuzzers/api_fuzzer_corpus/22d23ae7b0a9c4ac6ffefe6b6b47bb5f54226ae1
  28. BIN
      test/core/end2end/fuzzers/api_fuzzer_corpus/255ab618b474a659914f5167f6e89ae3f1376788
  29. BIN
      test/core/end2end/fuzzers/api_fuzzer_corpus/2577397157d02cde4544e70fd6c3ff68704dd13b
  30. BIN
      test/core/end2end/fuzzers/api_fuzzer_corpus/25c8a5f8fbaf47c8a398a284008d90d088c652b2
  31. BIN
      test/core/end2end/fuzzers/api_fuzzer_corpus/26b6654b4efb469d4c8202dfc2ddafe4fc15e2d1
  32. BIN
      test/core/end2end/fuzzers/api_fuzzer_corpus/2806c68471ca16df5356ef6a3379ea46c73c57cc
  33. BIN
      test/core/end2end/fuzzers/api_fuzzer_corpus/2835dc7045dff8fd93a6e50bfd8775a50fce7599
  34. BIN
      test/core/end2end/fuzzers/api_fuzzer_corpus/28f73943647c3bfbd96e8d1a6188c428b15fdf12
  35. BIN
      test/core/end2end/fuzzers/api_fuzzer_corpus/29f39c36ffc68643789cd59ab9311a899fd9cfa6
  36. BIN
      test/core/end2end/fuzzers/api_fuzzer_corpus/2afc0ae3e27ba7ab7ea26d656a01da4d85e0bbea
  37. BIN
      test/core/end2end/fuzzers/api_fuzzer_corpus/2bc40826844d2232d9d36699432a30b4b1e5dd3a
  38. BIN
      test/core/end2end/fuzzers/api_fuzzer_corpus/2bcd71048dec1df45e36fde6deeb8f04bbd01cd4
  39. BIN
      test/core/end2end/fuzzers/api_fuzzer_corpus/2bfa23d5d476e4266cba3979f81a9ebdc26993e1
  40. BIN
      test/core/end2end/fuzzers/api_fuzzer_corpus/2d742d21ecbf421506ecf19b23d6075feca4350b
  41. BIN
      test/core/end2end/fuzzers/api_fuzzer_corpus/2dd76fc710e3e78eaf4e5069fa227de678d0830d
  42. BIN
      test/core/end2end/fuzzers/api_fuzzer_corpus/2f9dd3b98b22bf2d4af5c2922977c8bb5699c367
  43. BIN
      test/core/end2end/fuzzers/api_fuzzer_corpus/2ff0986c252d462149597fd83bd5753926d343a0
  44. BIN
      test/core/end2end/fuzzers/api_fuzzer_corpus/3037118f9983abef4c9757742269f00cc90c0609
  45. BIN
      test/core/end2end/fuzzers/api_fuzzer_corpus/312b8910d1965fbfb09f0cb73e7e9d28316677bb
  46. BIN
      test/core/end2end/fuzzers/api_fuzzer_corpus/33306900f08f0b618c2bf4ba6f6144be9d19cb97
  47. BIN
      test/core/end2end/fuzzers/api_fuzzer_corpus/364f0605fd2d145db6ee6c7b01affb8833379db4
  48. BIN
      test/core/end2end/fuzzers/api_fuzzer_corpus/371d4ed270fb3cc3858a33fc0a857da2a21e6478
  49. BIN
      test/core/end2end/fuzzers/api_fuzzer_corpus/37b8a63d83441e64e279457d0e8318581ad3a7e6
  50. BIN
      test/core/end2end/fuzzers/api_fuzzer_corpus/37c26aa03db5daa01d7233f3c9fc474f81a724d1
  51. BIN
      test/core/end2end/fuzzers/api_fuzzer_corpus/39330aec49922885cf84803d7a5ee61d5948ee66
  52. BIN
      test/core/end2end/fuzzers/api_fuzzer_corpus/3abac3ec4db280fe9b8893b5f42986508dd87201
  53. BIN
      test/core/end2end/fuzzers/api_fuzzer_corpus/3adc410756f3e9cb929570bd5e5107663e8eed80
  54. BIN
      test/core/end2end/fuzzers/api_fuzzer_corpus/3c2b6ebd2cd3fa2ea216ed01c4a7275ecbaa40c0
  55. BIN
      test/core/end2end/fuzzers/api_fuzzer_corpus/3c94ad60589b22d99dd03f98b37c609c180a755d
  56. BIN
      test/core/end2end/fuzzers/api_fuzzer_corpus/3d48a5c5a6188238bffee78f07b7cf6bb854258d
  57. BIN
      test/core/end2end/fuzzers/api_fuzzer_corpus/3d770d35de84de36ce4ed5b22f782edc99ecc634
  58. BIN
      test/core/end2end/fuzzers/api_fuzzer_corpus/3e0407abf398a7c40a34df7ed33ff23de02a2a6b
  59. BIN
      test/core/end2end/fuzzers/api_fuzzer_corpus/3e539f323c6ddea1bd3e34599a3c47b4457acdcf
  60. BIN
      test/core/end2end/fuzzers/api_fuzzer_corpus/3ed3fbcdae0ab5b185d6e7f1f46c2440f656e8d6
  61. BIN
      test/core/end2end/fuzzers/api_fuzzer_corpus/3ef10f7eba289d88e82f3678434ecc1218a47ee3
  62. BIN
      test/core/end2end/fuzzers/api_fuzzer_corpus/3f4ab27065d2a4fed7d011af384e03150b72eda5
  63. BIN
      test/core/end2end/fuzzers/api_fuzzer_corpus/3fbf231b2182dc58d2cdf1c62f01a8b709752505
  64. BIN
      test/core/end2end/fuzzers/api_fuzzer_corpus/44e696d37d7c113cf070d19871d5cc4e24a861d2
  65. BIN
      test/core/end2end/fuzzers/api_fuzzer_corpus/464ad6f3ca7fdcaf80dd97478b6aa3b7005db6f2
  66. BIN
      test/core/end2end/fuzzers/api_fuzzer_corpus/47062580b496ad925d4d2faf1baec14bfe69a95b
  67. BIN
      test/core/end2end/fuzzers/api_fuzzer_corpus/484ba3a787c8dab704c5d451e834044b46e35cdd
  68. BIN
      test/core/end2end/fuzzers/api_fuzzer_corpus/48b3180434c4a21b334d7032ded763ef62b501bc
  69. BIN
      test/core/end2end/fuzzers/api_fuzzer_corpus/48ca1abe666bbf83a81d5c3be2d72017131ca4bf
  70. BIN
      test/core/end2end/fuzzers/api_fuzzer_corpus/494f747fe7c326002c3fb676c35d5dca2e28fd89
  71. BIN
      test/core/end2end/fuzzers/api_fuzzer_corpus/4a4ed32b4433e3cd99a4cd3cea00551074d07c9d
  72. BIN
      test/core/end2end/fuzzers/api_fuzzer_corpus/4a7f8838cbf48e54b6649e62a32d4f0173ada959
  73. BIN
      test/core/end2end/fuzzers/api_fuzzer_corpus/4b08cbe9580dee1321fca514e74fbdd0022ec574
  74. BIN
      test/core/end2end/fuzzers/api_fuzzer_corpus/4df3330a4c9a861ed98d0c5a19f7388ab1c9840d
  75. BIN
      test/core/end2end/fuzzers/api_fuzzer_corpus/50125f617f85b033f72e4938f227fc771083e9d1
  76. BIN
      test/core/end2end/fuzzers/api_fuzzer_corpus/51a2c3035dc5359f9887b588b922faa6789c7ea7
  77. BIN
      test/core/end2end/fuzzers/api_fuzzer_corpus/5259807dc13effc44f0785be11f5dc0c0f35a659
  78. BIN
      test/core/end2end/fuzzers/api_fuzzer_corpus/531c6bd636d1d022ecdabf41243c1f036162bd8b
  79. BIN
      test/core/end2end/fuzzers/api_fuzzer_corpus/56be7398f856423e2252d1a4e31103ebaebcc15b
  80. BIN
      test/core/end2end/fuzzers/api_fuzzer_corpus/5748d19bd88d2495f0ced135e70b5bb4fe0b4148
  81. 1
      test/core/end2end/fuzzers/api_fuzzer_corpus/5928c7d56230ac7c10860c64ebfa6aa243f2966c
  82. BIN
      test/core/end2end/fuzzers/api_fuzzer_corpus/5ad89e10b538191d22187503233223d2e520d80f
  83. BIN
      test/core/end2end/fuzzers/api_fuzzer_corpus/5b1d5721f3828cb73647cbf8c9e6b456a505a00b
  84. BIN
      test/core/end2end/fuzzers/api_fuzzer_corpus/5b8bc6a61171513d5c9a96cb340e0a435c524017
  85. BIN
      test/core/end2end/fuzzers/api_fuzzer_corpus/5cd1f23514773a7c5dd30be268b6fcfd1ace84b3
  86. BIN
      test/core/end2end/fuzzers/api_fuzzer_corpus/5d8bc49f1deb0199a806113ab049df418a9d9316
  87. BIN
      test/core/end2end/fuzzers/api_fuzzer_corpus/5da04bc3d5b4889de2f12508ef13bcb490787854
  88. BIN
      test/core/end2end/fuzzers/api_fuzzer_corpus/6196eb700471a9678e3e68526ab65bf4346c5bad
  89. BIN
      test/core/end2end/fuzzers/api_fuzzer_corpus/63b74d17bfbd015bb55dda59a05101bee001369c
  90. BIN
      test/core/end2end/fuzzers/api_fuzzer_corpus/63d83cb5580d3222eb5e2d7982f7f995634ba5c1
  91. BIN
      test/core/end2end/fuzzers/api_fuzzer_corpus/64ce7e5553de2c081991af4fc386bffdd8d2e210
  92. BIN
      test/core/end2end/fuzzers/api_fuzzer_corpus/6730972339225220310ac8c09c0f776ae465fc87
  93. BIN
      test/core/end2end/fuzzers/api_fuzzer_corpus/6810347353fd417add645af90476310bbf572788
  94. BIN
      test/core/end2end/fuzzers/api_fuzzer_corpus/6839920a4e7e998a8f30e6679934b91a819bebc9
  95. BIN
      test/core/end2end/fuzzers/api_fuzzer_corpus/68d88fa596ebee37d7c0251c0abcd844b452cf28
  96. BIN
      test/core/end2end/fuzzers/api_fuzzer_corpus/6a0c934ac351b40c8815d7812a2bb1b0ca30940f
  97. BIN
      test/core/end2end/fuzzers/api_fuzzer_corpus/6bddcd6ce1ff68320e3cc62bc215acf04de36ed2
  98. BIN
      test/core/end2end/fuzzers/api_fuzzer_corpus/6f72c05f90d289ad239cff682d8e911cbbb416dc
  99. BIN
      test/core/end2end/fuzzers/api_fuzzer_corpus/6f93d27e20d9158285cdc0193757daa2e34190b1
  100. 1
      test/core/end2end/fuzzers/api_fuzzer_corpus/6fc72a2c1ff9a11539ae35b197a79786496c2257
  101. Some files were not shown because too many files have changed in this diff Show More

@ -2110,7 +2110,7 @@ targets:
- gpr_test_util
- gpr
corpus_dirs:
- test/core/http/corpus
- test/core/http/request_corpus
maxlen: 2048
- name: http_response_fuzzer_test
build: fuzzer
@ -2123,7 +2123,7 @@ targets:
- gpr_test_util
- gpr
corpus_dirs:
- test/core/http/corpus
- test/core/http/response_corpus
maxlen: 2048
- name: httpcli_format_request_test
build: test

@ -162,7 +162,6 @@ static grpc_mdelem *server_filter(void *user_data, grpc_mdelem *md) {
/* Retrieve the payload from the value of the 'grpc-internal-payload-bin'
header field */
calld->seen_payload_bin = 1;
gpr_slice_buffer_init(&calld->read_slice_buffer);
gpr_slice_buffer_add(&calld->read_slice_buffer,
gpr_slice_ref(md->value->slice));
grpc_slice_buffer_stream_init(&calld->read_stream,
@ -314,13 +313,17 @@ static grpc_error *init_call_elem(grpc_exec_ctx *exec_ctx,
grpc_closure_init(&calld->hs_on_recv, hs_on_recv, elem);
grpc_closure_init(&calld->hs_on_complete, hs_on_complete, elem);
grpc_closure_init(&calld->hs_recv_message_ready, hs_recv_message_ready, elem);
gpr_slice_buffer_init(&calld->read_slice_buffer);
return GRPC_ERROR_NONE;
}
/* Destructor for call_data */
static void destroy_call_elem(grpc_exec_ctx *exec_ctx, grpc_call_element *elem,
const grpc_call_final_info *final_info,
void *ignored) {}
void *ignored) {
call_data *calld = elem->call_data;
gpr_slice_buffer_destroy(&calld->read_slice_buffer);
}
/* Constructor for channel_data */
static void init_channel_elem(grpc_exec_ctx *exec_ctx,

@ -687,6 +687,11 @@ size_t grpc_mdstr_length(const grpc_mdstr *s) { return GRPC_MDSTR_LENGTH(s); }
grpc_mdstr *grpc_mdstr_ref(grpc_mdstr *gs DEBUG_ARGS) {
internal_string *s = (internal_string *)gs;
if (is_mdstr_static(gs)) return gs;
#ifdef GRPC_METADATA_REFCOUNT_DEBUG
gpr_log(file, line, GPR_LOG_SEVERITY_DEBUG, "STR REF:%p:%zu->%zu: '%s'",
(void *)s, gpr_atm_no_barrier_load(&s->refcnt),
gpr_atm_no_barrier_load(&s->refcnt) + 1, grpc_mdstr_as_c_string(gs));
#endif
GPR_ASSERT(gpr_atm_full_fetch_add(&s->refcnt, 1) > 0);
return gs;
}
@ -694,6 +699,11 @@ grpc_mdstr *grpc_mdstr_ref(grpc_mdstr *gs DEBUG_ARGS) {
void grpc_mdstr_unref(grpc_mdstr *gs DEBUG_ARGS) {
internal_string *s = (internal_string *)gs;
if (is_mdstr_static(gs)) return;
#ifdef GRPC_METADATA_REFCOUNT_DEBUG
gpr_log(file, line, GPR_LOG_SEVERITY_DEBUG, "STR UNREF:%p:%zu->%zu: '%s'",
(void *)s, gpr_atm_no_barrier_load(&s->refcnt),
gpr_atm_no_barrier_load(&s->refcnt) - 1, grpc_mdstr_as_c_string(gs));
#endif
if (1 == gpr_atm_full_fetch_add(&s->refcnt, -1)) {
strtab_shard *shard =
&g_strtab_shard[SHARD_IDX(s->hash, LOG2_STRTAB_SHARD_COUNT)];

@ -55,6 +55,21 @@ bool leak_check = true;
static void dont_log(gpr_log_func_args *args) {}
////////////////////////////////////////////////////////////////////////////////
// global state
static gpr_timespec g_now;
static grpc_server *g_server;
static grpc_channel *g_channel;
static grpc_resource_quota *g_resource_quota;
extern gpr_timespec (*gpr_now_impl)(gpr_clock_type clock_type);
static gpr_timespec now_impl(gpr_clock_type clock_type) {
GPR_ASSERT(clock_type != GPR_TIMESPAN);
return g_now;
}
////////////////////////////////////////////////////////////////////////////////
// input_stream: allows easy access to input bytes, and allows reading a little
// past the end (avoiding needing to check everywhere)
@ -150,13 +165,28 @@ static grpc_channel_args *read_args(input_stream *inp) {
size_t n = next_byte(inp);
grpc_arg *args = gpr_malloc(sizeof(*args) * n);
for (size_t i = 0; i < n; i++) {
bool is_string = next_byte(inp) & 1;
args[i].type = is_string ? GRPC_ARG_STRING : GRPC_ARG_INTEGER;
args[i].key = read_string(inp);
if (is_string) {
args[i].value.string = read_string(inp);
} else {
args[i].value.integer = read_int(inp);
switch (next_byte(inp)) {
case 1:
args[i].type = GRPC_ARG_STRING;
args[i].key = read_string(inp);
args[i].value.string = read_string(inp);
break;
case 2:
args[i].type = GRPC_ARG_INTEGER;
args[i].key = read_string(inp);
args[i].value.integer = read_int(inp);
break;
case 3:
args[i].type = GRPC_ARG_POINTER;
args[i].key = gpr_strdup(GRPC_ARG_RESOURCE_QUOTA);
args[i].value.pointer.vtable = grpc_resource_quota_arg_vtable();
args[i].value.pointer.p = g_resource_quota;
grpc_resource_quota_ref(g_resource_quota);
break;
default:
end(inp);
n = i;
break;
}
}
grpc_channel_args *a = gpr_malloc(sizeof(*a));
@ -167,21 +197,6 @@ static grpc_channel_args *read_args(input_stream *inp) {
static bool is_eof(input_stream *inp) { return inp->cur == inp->end; }
////////////////////////////////////////////////////////////////////////////////
// global state
static gpr_timespec g_now;
static grpc_server *g_server;
static grpc_channel *g_channel;
static grpc_resource_quota *g_resource_quota;
extern gpr_timespec (*gpr_now_impl)(gpr_clock_type clock_type);
static gpr_timespec now_impl(gpr_clock_type clock_type) {
GPR_ASSERT(clock_type != GPR_TIMESPAN);
return g_now;
}
////////////////////////////////////////////////////////////////////////////////
// dns resolution

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save