libmicrohttpd

HTTP/1.x server C library (MHD 1.x, stable)
Log | Files | Refs | Submodules | README | LICENSE

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"