fuzz_request.dict (4768B)
1 # libFuzzer dictionary for fuzz_request (GNU libmicrohttpd). 2 # 3 # Format: libFuzzer / AFL "name=\"value\"" tokens. Only \\, \" and \xAB are 4 # valid escapes, so CR/LF are written as \x0d / \x0a. 5 # 6 # fuzz_request consumes a header of 4 configuration bytes followed by 7 # length-prefixed send segments (see src/fuzz/README section 2.2), so a 8 # dictionary token is useful mainly inside the segment payload - i.e. these 9 # are the HTTP tokens that the request parser reacts to. 10 11 # --- line terminators and separators ------------------------------------ 12 crlf="\x0d\x0a" 13 crlfcrlf="\x0d\x0a\x0d\x0a" 14 bare_cr="\x0d" 15 bare_lf="\x0a" 16 fold="\x0d\x0a\x20" 17 fold_tab="\x0d\x0a\x09" 18 colon_sp=": " 19 colon=":" 20 semi=";" 21 comma="," 22 equals="=" 23 quote="\"" 24 25 # --- request line ------------------------------------------------------- 26 m_get="GET " 27 m_head="HEAD " 28 m_post="POST " 29 m_put="PUT " 30 m_delete="DELETE " 31 m_options="OPTIONS " 32 m_connect="CONNECT " 33 m_trace="TRACE " 34 m_patch="PATCH " 35 v_11=" HTTP/1.1" 36 v_10=" HTTP/1.0" 37 v_09=" HTTP/0.9" 38 v_20=" HTTP/2.0" 39 v_bad=" HTTP/1." 40 tgt_root="/" 41 tgt_star="*" 42 tgt_abs="http://example.org/a" 43 tgt_query="/a?b" 44 tgt_query_noeq="/a?b&c" 45 tgt_dotdot="/../" 46 tgt_pct="%41" 47 tgt_pct_bad="%zz" 48 tgt_pct_trunc="%4" 49 tgt_nul="%00" 50 51 # --- framing headers ---------------------------------------------------- 52 h_host="Host: " 53 h_cl="Content-Length: " 54 h_te="Transfer-Encoding: " 55 h_te_chunked="Transfer-Encoding: chunked\x0d\x0a" 56 h_te_ident="Transfer-Encoding: identity\x0d\x0a" 57 h_te_double="Transfer-Encoding: chunked, chunked\x0d\x0a" 58 h_conn="Connection: " 59 h_conn_close="Connection: close\x0d\x0a" 60 h_conn_ka="Connection: keep-alive\x0d\x0a" 61 h_conn_upgrade="Connection: Upgrade\x0d\x0a" 62 h_upgrade="Upgrade: " 63 h_expect="Expect: 100-continue\x0d\x0a" 64 h_ct="Content-Type: " 65 h_cookie="Cookie: " 66 h_trailer="Trailer: " 67 h_te_hdr="TE: " 68 v_chunked="chunked" 69 v_identity="identity" 70 v_gzip="gzip" 71 v_100="100-continue" 72 cl_zero="Content-Length: 0\x0d\x0a" 73 cl_neg="Content-Length: -1\x0d\x0a" 74 cl_huge="Content-Length: 18446744073709551615\x0d\x0a" 75 cl_plus="Content-Length: +5\x0d\x0a" 76 cl_hex="Content-Length: 0x5\x0d\x0a" 77 cl_dup="Content-Length: 5\x0d\x0aContent-Length: 6\x0d\x0a" 78 79 # --- chunked transfer coding & chunk extensions ------------------------- 80 chunk_last="0\x0d\x0a\x0d\x0a" 81 chunk_last_nl="0\x0d\x0a" 82 chunk_5="5\x0d\x0a" 83 chunk_hex="ff\x0d\x0a" 84 chunk_big="7fffffffffffffff\x0d\x0a" 85 chunk_ext=";ext" 86 chunk_ext_val=";ext=val" 87 chunk_ext_quoted=";ext=\"quoted\"" 88 chunk_ext_multi=";a=1;b=2;c" 89 chunk_ext_unterminated=";ext=\"qqqqqqqqqqqqqqqq" 90 chunk_ext_bs=";ext=\"a\\\"b\"" 91 chunk_ext_ws="; ext = val " 92 trailer_line="X-Trailer: v\x0d\x0a" 93 94 # --- digest / basic authentication -------------------------------------- 95 h_authz="Authorization: " 96 a_digest="Authorization: Digest " 97 a_basic="Authorization: Basic " 98 p_username="username=\"" 99 p_userhash="userhash=" 100 p_userhash_t="userhash=true" 101 p_userhash_f="userhash=false" 102 p_username_star="username*=UTF-8''a" 103 p_realm="realm=\"" 104 p_realm_empty="realm=\"\"" 105 p_nonce="nonce=\"" 106 p_nonce_ph="%%NONCE%%" 107 p_nonce_zero="nonce=\"0000\"" 108 p_uri="uri=\"" 109 p_response="response=\"" 110 p_cnonce="cnonce=\"" 111 p_nc="nc=00000001" 112 p_opaque="opaque=\"" 113 p_qop="qop=" 114 p_algorithm="algorithm=" 115 a_md5="MD5" 116 a_md5_sess="MD5-sess" 117 a_sha256="SHA-256" 118 a_sha256_sess="SHA-256-sess" 119 a_sha512_256="SHA-512-256" 120 a_sha512_256_sess="SHA-512-256-sess" 121 a_unknown="SHA-1" 122 q_auth="auth" 123 q_auth_int="auth-int" 124 q_auth_both="auth,auth-int" 125 resp_hex="0123456789abcdef" 126 resp_long="00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" 127 basic_b64="dXNlcjpwYXNz" 128 scheme_bearer="Bearer " 129 scheme_negotiate="Negotiate " 130 131 # --- post bodies (the handler may run MHD_post_process) ----------------- 132 ct_urlenc="Content-Type: application/x-www-form-urlencoded\x0d\x0a" 133 ct_multipart="Content-Type: multipart/form-data; boundary=b\x0d\x0a" 134 ct_mixed="Content-Type: multipart/mixed; boundary=b\x0d\x0a" 135 mp_dashes="--" 136 mp_boundary="--b\x0d\x0a" 137 mp_end="--b--\x0d\x0a" 138 cd_form="Content-Disposition: form-data; name=\"a\"\x0d\x0a" 139 cd_file="Content-Disposition: form-data; name=\"a\"; filename=\"f\"\x0d\x0a" 140 kv="a=b" 141 kv_amp="&" 142 kv_plus="+" 143 kv_noeq="a" 144 145 # HTTP "Upgrade" -- the extended configuration (byte 7 bit 0x04) only 146 # answers 101 for a request that really asks to upgrade, so without 147 # these tokens MHD_create_response_for_upgrade(), the upgrade handler 148 # and MHD_upgrade_action() are statistically unreachable. 149 upgrade_hdr="Upgrade: " 150 upgrade_conn="Connection: Upgrade\x0d\x0a" 151 upgrade_conn_lc="connection: upgrade\x0d\x0a" 152 upgrade_websocket="Upgrade: websocket\x0d\x0a" 153 upgrade_h2c="Upgrade: h2c\x0d\x0a" 154 upgrade_proto="fuzz-protocol" 155 upgrade_both="Connection: keep-alive, Upgrade\x0d\x0a" 156 conn_close="Connection: close\x0d\x0a"