Merge pull request #6203 from ctiller/dictionary

Add a dictionary for fuzzing
pull/6212/head
Nicolas Noble 9 years ago
commit 573457bfd9
  1. 3
      build.yaml
  2. 12
      src/core/ext/transport/chttp2/transport/hpack_parser.c
  3. 4
      templates/tools/fuzzer/runners.template
  4. BIN
      test/core/end2end/fuzzers/client_fuzzer_corpus/025215e11687c7d2e0055e5b2b902d08e0436f78
  5. BIN
      test/core/end2end/fuzzers/client_fuzzer_corpus/02ba99615d1d69eb328adce99670f659959c1bc1
  6. BIN
      test/core/end2end/fuzzers/client_fuzzer_corpus/07048654244e377ddf246e8cc18f71443035cd2b
  7. BIN
      test/core/end2end/fuzzers/client_fuzzer_corpus/0c30868720d5e1a19ff23c53740749c37a43540d
  8. BIN
      test/core/end2end/fuzzers/client_fuzzer_corpus/0d8c547f1d261ba07c2648bae009636c17709600
  9. BIN
      test/core/end2end/fuzzers/client_fuzzer_corpus/0fd8859246740606c498755ab00d6147abcfec00
  10. BIN
      test/core/end2end/fuzzers/client_fuzzer_corpus/101305ccd08c7a8bd0c2913c37d3dd0d39d4bb64
  11. BIN
      test/core/end2end/fuzzers/client_fuzzer_corpus/1160214cdb23e8fc187078a8d6796656c1ade925
  12. BIN
      test/core/end2end/fuzzers/client_fuzzer_corpus/17b1758fc7cd69a00d140f113b1ac894023ff20b
  13. BIN
      test/core/end2end/fuzzers/client_fuzzer_corpus/1aee32faadffa3c2ec508e8fd30006423665488f
  14. 1
      test/core/end2end/fuzzers/client_fuzzer_corpus/1ca51ab2fefef4f549c4a8e7f4910c6b5a4b4b1d
  15. BIN
      test/core/end2end/fuzzers/client_fuzzer_corpus/1dc86d0febe4adc5353230cea24b5f7cce829283
  16. BIN
      test/core/end2end/fuzzers/client_fuzzer_corpus/1f040e756f76357979f317e0c6541f72fd93df06
  17. BIN
      test/core/end2end/fuzzers/client_fuzzer_corpus/20216d27af2b3dcc83d944e5f7a489ed2eff98fd
  18. BIN
      test/core/end2end/fuzzers/client_fuzzer_corpus/205cf2b6994f10b783aa0a06938a5e47cb581126
  19. BIN
      test/core/end2end/fuzzers/client_fuzzer_corpus/2166c7093c424a2136c4cb8b10d0b124047320d4
  20. BIN
      test/core/end2end/fuzzers/client_fuzzer_corpus/2467fa0f8a9f4bd121f544892f0782498b2df533
  21. BIN
      test/core/end2end/fuzzers/client_fuzzer_corpus/246dcf347eba7f4d4e04d97dabc002f0acf2164e
  22. BIN
      test/core/end2end/fuzzers/client_fuzzer_corpus/28ee8cae75efa07da9649933a9482d00643b5395
  23. BIN
      test/core/end2end/fuzzers/client_fuzzer_corpus/29be7d33920998bae7329d77d4c81989eae91647
  24. BIN
      test/core/end2end/fuzzers/client_fuzzer_corpus/31545e9fe4c6aa43329dc0d4a735842574fcaaed
  25. BIN
      test/core/end2end/fuzzers/client_fuzzer_corpus/3336748264594689041e4080b51bc56f716d0689
  26. BIN
      test/core/end2end/fuzzers/client_fuzzer_corpus/361c6f4374443671f039fd9659577e4460178020
  27. BIN
      test/core/end2end/fuzzers/client_fuzzer_corpus/375c2462d6ae891222686f9519294811fa5de010
  28. BIN
      test/core/end2end/fuzzers/client_fuzzer_corpus/4a4553c2e939cd50981bc38e8ddb1f2109ddb3a4
  29. BIN
      test/core/end2end/fuzzers/client_fuzzer_corpus/4b585eb75ebca2187c0aa5a6abe4c8125aa80127
  30. BIN
      test/core/end2end/fuzzers/client_fuzzer_corpus/51c6c5297acebf9d21a8a7d6261d0a17c2adfb56
  31. BIN
      test/core/end2end/fuzzers/client_fuzzer_corpus/534c900ade27c8f7fccb1f3b7e7703f77f13a8f5
  32. BIN
      test/core/end2end/fuzzers/client_fuzzer_corpus/5482dc4af170def9c183315efaa48f9c186926a1
  33. BIN
      test/core/end2end/fuzzers/client_fuzzer_corpus/57ee6efc38f4c544a3ea3e5e73987e825bdf2980
  34. BIN
      test/core/end2end/fuzzers/client_fuzzer_corpus/5a2447fdfdbf123f4592c1284007b7d50a01750b
  35. BIN
      test/core/end2end/fuzzers/client_fuzzer_corpus/5ca233a53e3e425cc12e04b466a49789291eaa00
  36. BIN
      test/core/end2end/fuzzers/client_fuzzer_corpus/5dc7b2086a39f56d8b9135f524d34a01fcabafd8
  37. BIN
      test/core/end2end/fuzzers/client_fuzzer_corpus/605e474e9d9436488dfe084d348908e4dfab81a3
  38. BIN
      test/core/end2end/fuzzers/client_fuzzer_corpus/611343a6b8879b393ba2f38ed41c7f5355355920
  39. BIN
      test/core/end2end/fuzzers/client_fuzzer_corpus/64d27dc9f984c49d421a5b0cb0391992d5aac1a4
  40. BIN
      test/core/end2end/fuzzers/client_fuzzer_corpus/653ec14661c40ea25bdbab4a7cb9371c669d10d9
  41. BIN
      test/core/end2end/fuzzers/client_fuzzer_corpus/6bfd3679f4e30aaaa1808e96c980edcfa9cac1c0
  42. BIN
      test/core/end2end/fuzzers/client_fuzzer_corpus/759a1e2e34cad14321a5e5790b1e6a783312fea1
  43. BIN
      test/core/end2end/fuzzers/client_fuzzer_corpus/807b8c4ca068cff4bc0fc8e854c1215a2fe65960
  44. BIN
      test/core/end2end/fuzzers/client_fuzzer_corpus/831248cea079b629bf0ef6d9d02c159d6f8ed41b
  45. BIN
      test/core/end2end/fuzzers/client_fuzzer_corpus/850c639595eae3cc9c2cfef473e28fd4e8174dc8
  46. BIN
      test/core/end2end/fuzzers/client_fuzzer_corpus/9552c3f6304af40224b800f3a3a5df3887a530f6
  47. BIN
      test/core/end2end/fuzzers/client_fuzzer_corpus/96e5126447131d3d59cc6547f6b91d3433ce37c8
  48. BIN
      test/core/end2end/fuzzers/client_fuzzer_corpus/98dddd3f679af150e9933bd864ae20e20b7aa25a
  49. BIN
      test/core/end2end/fuzzers/client_fuzzer_corpus/9a4da2a37a26c114e1226bfbe1cf80ec5ca99a66
  50. BIN
      test/core/end2end/fuzzers/client_fuzzer_corpus/9dfdce1b090a559a14f9a5852f78547413b1d1ed
  51. BIN
      test/core/end2end/fuzzers/client_fuzzer_corpus/a3cd54d43d3b3bdfcf224d636dc11ce1b5ee4d30
  52. BIN
      test/core/end2end/fuzzers/client_fuzzer_corpus/a706f2067bfbda7837eaad68972d60547e2957c3
  53. BIN
      test/core/end2end/fuzzers/client_fuzzer_corpus/ade2d2f0e120a9527487e9b92458ee6844800e4e
  54. BIN
      test/core/end2end/fuzzers/client_fuzzer_corpus/af8b24ffaecdfaf96c0cd7c76f31dc9e1b4d0935
  55. BIN
      test/core/end2end/fuzzers/client_fuzzer_corpus/b3f33b78433af7f607bc99b569b0cef95a1a6ca0
  56. BIN
      test/core/end2end/fuzzers/client_fuzzer_corpus/baf7839388e10ff0c410a58797482cb83693b309
  57. BIN
      test/core/end2end/fuzzers/client_fuzzer_corpus/c685689a9d5b259afe237d857b7c6551dc95c176
  58. BIN
      test/core/end2end/fuzzers/client_fuzzer_corpus/c784ad2e205ba49b5bb1302746723dbc57320981
  59. BIN
      test/core/end2end/fuzzers/client_fuzzer_corpus/cd4be18b1ae872c40580edc4fe8cbdf1fe2a3881
  60. BIN
      test/core/end2end/fuzzers/client_fuzzer_corpus/ce990633c0f2b2a2ddb66144ed942d4bc9bcd8fb
  61. BIN
      test/core/end2end/fuzzers/client_fuzzer_corpus/crash-8e546795782dffa5d5f5e94c9510aac178fcee39
  62. BIN
      test/core/end2end/fuzzers/client_fuzzer_corpus/d257c41db22b60cd937de16b9d90a44b9fa8e426
  63. BIN
      test/core/end2end/fuzzers/client_fuzzer_corpus/d727b7edb460c549d7b12b90f581048c9f4747e5
  64. BIN
      test/core/end2end/fuzzers/client_fuzzer_corpus/d90c312791129dee8c5f85cb3308323d0c39b70d
  65. BIN
      test/core/end2end/fuzzers/client_fuzzer_corpus/d91281daad9b821294db204dfc244b2d0d5496e4
  66. BIN
      test/core/end2end/fuzzers/client_fuzzer_corpus/da322a6b88da87babb52d1527fe54cb4ac214b32
  67. BIN
      test/core/end2end/fuzzers/client_fuzzer_corpus/dc815fd6d5e817898238481472f359bc50b510c4
  68. BIN
      test/core/end2end/fuzzers/client_fuzzer_corpus/dd662353bad317cee7d16191a39e094bfa4898f2
  69. BIN
      test/core/end2end/fuzzers/client_fuzzer_corpus/e5a7c086208248a15ee6fa5195fc4ce22469de15
  70. BIN
      test/core/end2end/fuzzers/client_fuzzer_corpus/ec180175f0edea0a6c3eea2ae719b006bc029ff8
  71. BIN
      test/core/end2end/fuzzers/client_fuzzer_corpus/ed6358fbe6721c9ac01a6f4cab4d2df377eb1f11
  72. 1
      test/core/end2end/fuzzers/client_fuzzer_corpus/ee436743977b8e31feec22a91b1ce23dee96665e
  73. BIN
      test/core/end2end/fuzzers/client_fuzzer_corpus/f84f5d6188cf099465f0b70337b87ad8aa8efb78
  74. BIN
      test/core/end2end/fuzzers/client_fuzzer_corpus/f9c875c00b7327df5bf21c3e051b55b0d2ed3cc8
  75. BIN
      test/core/end2end/fuzzers/client_fuzzer_corpus/fe1390762579b5c335bbdea73e251b95b979c3c9
  76. BIN
      test/core/end2end/fuzzers/client_fuzzer_corpus/fecccfc70b1cf1a524b9f28a9ba2c153c8e14d0e
  77. BIN
      test/core/end2end/fuzzers/client_fuzzer_corpus/fef80aa34c31700ac8e53bede4a97131176ceef0
  78. 91
      test/core/end2end/fuzzers/hpack.dictionary
  79. BIN
      test/core/end2end/fuzzers/server_fuzzer_corpus/6f3bd9f33ca05bebe3811f7b3ae6ed112e1e45b9
  80. BIN
      test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-1b6c4b5c1949adae3efd5e3264bb32a40eea524e
  81. BIN
      test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-7281d9eaed0d20b0b6b5e7709c57e78fefe9c315
  82. BIN
      test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-9a176b6f7e0dc5f681a1788d8954f76fabd08cad
  83. BIN
      test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-a61a28cf78149518466b87e5463ec5c771dc504e
  84. BIN
      test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-aa23c18f6badd88a7bec65e8b04f7801ba624ec6
  85. BIN
      test/core/end2end/fuzzers/server_fuzzer_corpus/slow-unit-ddfe613d8791b2d377e14fbdffb18b84a89d49b6
  86. 32
      tools/codegen/core/gen_static_metadata.py
  87. 2
      tools/fuzzer/runners/client_fuzzer.sh
  88. 2
      tools/fuzzer/runners/hpack_parser_fuzzer_test.sh
  89. 1
      tools/fuzzer/runners/http_fuzzer_test.sh
  90. 1
      tools/fuzzer/runners/json_fuzzer_test.sh
  91. 1
      tools/fuzzer/runners/nanopb_fuzzer_response_test.sh
  92. 1
      tools/fuzzer/runners/nanopb_fuzzer_serverlist_test.sh
  93. 2
      tools/fuzzer/runners/server_fuzzer.sh
  94. 1
      tools/fuzzer/runners/uri_fuzzer_test.sh
  95. 2980
      tools/run_tests/tests.json

@ -1187,6 +1187,7 @@ targets:
- gpr
corpus_dirs:
- test/core/end2end/fuzzers/client_fuzzer_corpus
dict: test/core/end2end/fuzzers/hpack.dictionary
maxlen: 2048
- name: compression_test
build: test
@ -1676,6 +1677,7 @@ targets:
- gpr
corpus_dirs:
- test/core/transport/chttp2/hpack_parser_corpus
dict: test/core/end2end/fuzzers/hpack.dictionary
maxlen: 512
- name: hpack_parser_test
build: test
@ -2027,6 +2029,7 @@ targets:
- gpr
corpus_dirs:
- test/core/end2end/fuzzers/server_fuzzer_corpus
dict: test/core/end2end/fuzzers/hpack.dictionary
maxlen: 2048
- name: server_test
build: test

@ -638,6 +638,10 @@ static int on_hdr(grpc_chttp2_hpack_parser *p, grpc_mdelem *md,
return 0;
}
}
if (p->on_header == NULL) {
grpc_mdelem_unref(md);
return 0;
}
p->on_header(p->on_header_user_data, md);
return 1;
}
@ -1382,12 +1386,8 @@ static int parse_value_string_with_literal_key(grpc_chttp2_hpack_parser *p,
/* PUBLIC INTERFACE */
static void on_header_not_set(void *user_data, grpc_mdelem *md) {
GPR_UNREACHABLE_CODE(return );
}
void grpc_chttp2_hpack_parser_init(grpc_chttp2_hpack_parser *p) {
p->on_header = on_header_not_set;
p->on_header = NULL;
p->on_header_user_data = NULL;
p->state = parse_begin;
p->key.str = NULL;
@ -1455,7 +1455,7 @@ grpc_chttp2_parse_error grpc_chttp2_header_parser_parse(
stream_parsing->received_close = 1;
}
}
parser->on_header = on_header_not_set;
parser->on_header = NULL;
parser->on_header_user_data = NULL;
parser->is_boundary = 0xde;
parser->is_eof = 0xde;

@ -37,6 +37,10 @@ template: |
flags="-max_total_time=$runtime -artifact_prefix=fuzzer_output/ -max_len=${selected.maxlen}"
%if selected.get('dict'):
flags="$flags -dict=${selected.dict}"
%endif
if [ "$jobs" != "1" ]
then
flags="-jobs=$jobs -workers=$jobs $flags"

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 B

@ -0,0 +1 @@
!m<EFBFBD><EFBFBD>!<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>

@ -0,0 +1 @@
!m<EFBFBD>!<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>

@ -0,0 +1,91 @@
# hpack fuzzing dictionary
kw0="\x01""0"
kw1="\x01""1"
kw2="\x01""2"
kw3="\x03""200"
kw4="\x03""204"
kw5="\x03""206"
kw6="\x03""304"
kw7="\x03""400"
kw8="\x03""404"
kw9="\x03""500"
kw10="\x06""accept"
kw11="\x0e""accept-charset"
kw12="\x0f""accept-encoding"
kw13="\x0f""accept-language"
kw14="\x0d""accept-ranges"
kw15="\x1b""access-control-allow-origin"
kw16="\x03""age"
kw17="\x05""allow"
kw18="\x10""application/grpc"
kw19="\x0a:authority"
kw20="\x0d""authorization"
kw21="\x0d""cache-control"
kw22="\x0a""census-bin"
kw23="\x11""census-binary-bin"
kw24="\x13""content-disposition"
kw25="\x10""content-encoding"
kw26="\x10""content-language"
kw27="\x0e""content-length"
kw28="\x10""content-location"
kw29="\x0d""content-range"
kw30="\x0c""content-type"
kw31="\x06""cookie"
kw32="\x04""date"
kw33="\x07""deflate"
kw34="\x0c""deflate,gzip"
kw35="\x00"
kw36="\x04""etag"
kw37="\x06""expect"
kw38="\x07""expires"
kw39="\x04""from"
kw40="\x03GET"
kw41="\x04grpc"
kw42="\x14grpc-accept-encoding"
kw43="\x0dgrpc-encoding"
kw44="\x1egrpc-internal-encoding-request"
kw45="\x0cgrpc-message"
kw46="\x0bgrpc-status"
kw47="\x0cgrpc-timeout"
kw48="\x04gzip"
kw49="\x0dgzip, deflate"
kw50="\x04host"
kw51="\x04http"
kw52="\x05https"
kw53="\x08identity"
kw54="\x10identity,deflate"
kw55="\x15identity,deflate,gzip"
kw56="\x0didentity,gzip"
kw57="\x08if-match"
kw58="\x11if-modified-since"
kw59="\x0dif-none-match"
kw60="\x08if-range"
kw61="\x13if-unmodified-since"
kw62="\x0dlast-modified"
kw63="\x04link"
kw64="\x08location"
kw65="\x0cmax-forwards"
kw66="\x07:method"
kw67="\x05:path"
kw68="\x04POST"
kw69="\x12proxy-authenticate"
kw70="\x13proxy-authorization"
kw71="\x03PUT"
kw72="\x05range"
kw73="\x07referer"
kw74="\x07refresh"
kw75="\x0bretry-after"
kw76="\x07:scheme"
kw77="\x06server"
kw78="\x0aset-cookie"
kw79="\x01/"
kw80="\x0b/index.html"
kw81="\x07:status"
kw82="\x19strict-transport-security"
kw83="\x02te"
kw84="\x08trailers"
kw85="\x11transfer-encoding"
kw86="\x0auser-agent"
kw87="\x04vary"
kw88="\x03via"
kw89="\x10www-authenticate"

@ -205,6 +205,7 @@ all_elems = sorted(list(all_elems), key=mangle)
args = sys.argv[1:]
H = None
C = None
D = None
if args:
if 'header' in args:
H = sys.stdout
@ -214,11 +215,17 @@ if args:
C = sys.stdout
else:
C = open('/dev/null', 'w')
if 'dictionary' in args:
D = sys.stdout
else:
D = open('/dev/null', 'w')
else:
H = open(os.path.join(
os.path.dirname(sys.argv[0]), '../../../src/core/lib/transport/static_metadata.h'), 'w')
C = open(os.path.join(
os.path.dirname(sys.argv[0]), '../../../src/core/lib/transport/static_metadata.c'), 'w')
D = open(os.path.join(
os.path.dirname(sys.argv[0]), '../../../test/core/end2end/fuzzers/hpack.dictionary'), 'w')
# copy-paste copyright notice from this file
with open(sys.argv[0]) as my_source:
@ -235,6 +242,27 @@ with open(sys.argv[0]) as my_source:
copyright.append(line)
put_banner([H,C], [line[2:].rstrip() for line in copyright])
hex_bytes = [ord(c) for c in "abcdefABCDEF0123456789"]
def esc_c(line):
out = "\""
last_was_hex = False
for c in line:
if 32 <= c < 127:
if c in hex_bytes and last_was_hex:
out += "\"\""
if c != ord('"'):
out += chr(c)
else:
out += "\\\""
last_was_hex = False
else:
out += "\\x%02x" % c
last_was_hex = True
return out + "\""
put_banner([H,C],
"""WARNING: Auto-generated code.
@ -263,6 +291,10 @@ print >>H
print >>C, 'grpc_mdstr grpc_static_mdstr_table[GRPC_STATIC_MDSTR_COUNT];'
print >>C
print >>D, '# hpack fuzzing dictionary'
for i, elem in enumerate(all_strs):
print >>D, 'kw%d=%s' % (i, esc_c([len(elem)] + [ord(c) for c in elem]))
print >>H, '#define GRPC_STATIC_MDELEM_COUNT %d' % len(all_elems)
print >>H, 'extern grpc_mdelem grpc_static_mdelem_table[GRPC_STATIC_MDELEM_COUNT];'
print >>H, 'extern uintptr_t grpc_static_mdelem_user_data[GRPC_STATIC_MDELEM_COUNT];'

@ -31,6 +31,8 @@
flags="-max_total_time=$runtime -artifact_prefix=fuzzer_output/ -max_len=2048"
flags="$flags -dict=test/core/end2end/fuzzers/hpack.dictionary"
if [ "$jobs" != "1" ]
then
flags="-jobs=$jobs -workers=$jobs $flags"

@ -31,6 +31,8 @@
flags="-max_total_time=$runtime -artifact_prefix=fuzzer_output/ -max_len=512"
flags="$flags -dict=test/core/end2end/fuzzers/hpack.dictionary"
if [ "$jobs" != "1" ]
then
flags="-jobs=$jobs -workers=$jobs $flags"

@ -31,6 +31,7 @@
flags="-max_total_time=$runtime -artifact_prefix=fuzzer_output/ -max_len=2048"
if [ "$jobs" != "1" ]
then
flags="-jobs=$jobs -workers=$jobs $flags"

@ -31,6 +31,7 @@
flags="-max_total_time=$runtime -artifact_prefix=fuzzer_output/ -max_len=512"
if [ "$jobs" != "1" ]
then
flags="-jobs=$jobs -workers=$jobs $flags"

@ -31,6 +31,7 @@
flags="-max_total_time=$runtime -artifact_prefix=fuzzer_output/ -max_len=128"
if [ "$jobs" != "1" ]
then
flags="-jobs=$jobs -workers=$jobs $flags"

@ -31,6 +31,7 @@
flags="-max_total_time=$runtime -artifact_prefix=fuzzer_output/ -max_len=128"
if [ "$jobs" != "1" ]
then
flags="-jobs=$jobs -workers=$jobs $flags"

@ -31,6 +31,8 @@
flags="-max_total_time=$runtime -artifact_prefix=fuzzer_output/ -max_len=2048"
flags="$flags -dict=test/core/end2end/fuzzers/hpack.dictionary"
if [ "$jobs" != "1" ]
then
flags="-jobs=$jobs -workers=$jobs $flags"

@ -31,6 +31,7 @@
flags="-max_total_time=$runtime -artifact_prefix=fuzzer_output/ -max_len=128"
if [ "$jobs" != "1" ]
then
flags="-jobs=$jobs -workers=$jobs $flags"

File diff suppressed because it is too large Load Diff
Loading…
Cancel
Save