fuzz_eventloop.dict (2336B)
1 # libFuzzer dictionary for fuzz_eventloop (GNU libmicrohttpd). 2 # 3 # The input is not HTTP: bytes 0-4 configure the daemon, the access handler 4 # and the event-loop defaults, and byte 5.. is a program of one-byte 5 # operations, "(opcode << 4) | argument". See src/fuzz/fuzz_eventloop.c for 6 # the full encoding. The tokens below are therefore *operations* and short 7 # operation sequences, not protocol syntax; single interesting bytes are left 8 # to libFuzzer's own mutators. 9 10 # --- one full external-event-loop round --------------------------------- 11 # MHD_get_fdset2() / select() / MHD_run_from_select2() 12 round_v2="\x21\xf0\x31" 13 # MHD_get_fdset() / select() / MHD_run_from_select() (the v1 pair) 14 round_v1="\x20\xf0\x30" 15 # ... with the timeout queried in between, which is what the API asks for 16 round_timeout="\x21\xf0\x40\x31" 17 18 # --- individual event-loop entry points --------------------------------- 19 get_fdset_v1="\x20" 20 get_fdset2="\x21" 21 get_fdset2_small="\x22" 22 get_fdset2_no_maxfd="\x23" 23 get_fdset2_no_except="\x24" 24 poll="\xf0" 25 run_from_select_v1="\x30" 26 run_from_select2="\x31" 27 run="\x32" 28 run_wait="\x33" 29 get_timeout="\x40" 30 quiesce="\xb0" 31 32 # --- descriptor sets that do not match what MHD asked for --------------- 33 run_zero_sets="\x34" 34 run_all_ones="\x38" 35 run_read_only="\x3c" 36 run2_zero_sets="\x35" 37 run2_all_ones="\x39" 38 39 # --- connection life cycle ---------------------------------------------- 40 new_connection="\x80" 41 close_connection="\x90" 42 close_abrupt="\x98" 43 switch_connection="\xa0" 44 drain_all="\xc8" 45 set_conn_timeout="\xd0" 46 set_conn_timeout_0="\xd8" 47 suspend="\x60" 48 resume="\x70" 49 suspend_resume="\x60\x70" 50 suspend_run_resume="\x60\x32\x70\x32" 51 52 # --- the artificial clock ------------------------------------------------ 53 clock_step="\x50" 54 clock_expiry="\x5f" 55 56 # --- request fragments --------------------------------------------------- 57 send_full_get="\x00" 58 send_partial_get="\x01" 59 send_crlf="\x02" 60 send_post_cl="\x03" 61 send_body="\x04" 62 send_post_chunked="\x05" 63 send_chunk="\x06" 64 send_last_chunk="\x07" 65 send_close="\x08" 66 send_http10="\x09" 67 send_head="\x0a" 68 send_pipelined="\x0b" 69 send_raw="\x10" 70 71 # --- whole schedules that reach the interesting states ------------------- 72 request_then_loop="\x00\x21\xf0\x31\x40" 73 park_then_stop="\x00\x32\x60\x40\x32" 74 quiesce_then_fdset="\xb0\x21\x40" 75 expiry="\x01\x32\x40\x5f\x40\x32"