New libFuzzer/AFL++ harnesses, each trapping on an oracle violation: p2p_json (nesting bound, round trip), p2p_connstr (endpoint round trip, pin idempotence, no silent re-pin), p2p_handshake (validators and the full acceptor bind the TLS peer), p2p_delta_stream (batch, session and bootstrap receive paths stay inside count and byte budgets), p2p_inbound (the manager inbound session through registry update) and topology_codec (decoded snapshots re-encode losslessly). p2p_delta now draws its exchange limits from the input. p2p_seeds.py writes framed-session seeds for FuzzedDataProvider layouts, dicts/p2p.dict carries the frame vocabulary, generate_corpus.sh accepts a local seedgen, and fuzz.sh no longer fails on macOS bash 3.2 when a target has no dictionary. The generated corpus stays untracked.
50 lines
715 B
Text
50 lines
715 B
Text
# Direct-P2P control-frame vocabulary for libFuzzer (-dict) and AFL++ (-x).
|
|
"type"
|
|
"hello"
|
|
"hello_ack"
|
|
"state"
|
|
"writer_window"
|
|
"history_proof"
|
|
"replication_mode"
|
|
"delta_batch"
|
|
"delta_record"
|
|
"delta_ack"
|
|
"snapshot_begin"
|
|
"snapshot_ack"
|
|
"protocol"
|
|
"schema_version"
|
|
"node_id"
|
|
"corpus_id"
|
|
"corpus_epoch"
|
|
"max_writer_advance"
|
|
"max_writer_window_bytes"
|
|
"vv"
|
|
"counters_"
|
|
"seen"
|
|
"commitments"
|
|
"quarantined_writers"
|
|
"writer"
|
|
"counter"
|
|
"count"
|
|
"has_more"
|
|
"payload_size"
|
|
"mode"
|
|
"delta"
|
|
"snapshot"
|
|
"witness"
|
|
"frontier"
|
|
"record_count"
|
|
"payload_bytes"
|
|
"root_digest"
|
|
"witness_key_id"
|
|
"witness_algorithm"
|
|
"witness_signature"
|
|
"Ed25519"
|
|
"yams://"
|
|
"corpus="
|
|
"epoch="
|
|
"pin="
|
|
"remember="
|
|
"sha256:"
|
|
"\x00\x00\x00\x00"
|
|
"\xff\xff\xff\xff"
|