dog/git/GIT.c drains tree entries, commit headers and refnames straight off
remote pack bytes, and dog/git/DELT.c::DELTApply applies delta instruction
streams — git's classic CVE alley. Today only the OFS delta chase
(PACKResolveOfs, dog/fuzz/PACKRESOLVE.c) is fuzzed; the applier alone and
the drains have no targets. Method: Issues.
GITu8sDrainTree/GITu8sFileSplit, GITu8sDrainCommit/GITParseCommit/
GITu8sIdent, GITParseRef/GITFeedRef, PKTu8sDrain — all consume
attacker-controlled bytes (pack objects, wire pkt-lines, refnames).DELTApply(base, delta, out) copy/insert opcodes index into base and
size out; PACKRESOLVEfuzz reaches it only through well-framed packs.PACKResolveOfs ping-pong sizing) is adjacent context; don't
duplicate its scope here.GITfuzz: one target looping each drain to exhaustion over the raw input
(first byte selects the drain); invariants: no crash/OOB, out-slices
in-bounds, drains consume monotonically (no infinite loop).DELTfuzz: split input into (base, delta), DELTApply into a bounded
buffer — corrupt streams must yield an error, never a fault; plus the
round-trip oracle DELTApply(a, DELTEncode(a,b)) == b on split inputs.dog/fuzz/CMakeLists.txt; ≥1M execs / 10 min clean under
ASan; seeds from real git objects (test/data, a .keeper log).PACKRESOLVE.c structure.GITfuzz: selector byte + drain loops for tree/commit/ident/ref/pkt.DELTfuzz: adversarial apply + encode/apply round-trip property.~/src/DOG-019 (fuzz/GIT.c
selector-byte drains, fuzz/DELT.c adversarial apply + encode/apply
round-trip oracle, CMake wiring, 14+5 seed corpora), UNLANDED.
Orchestrator-verified: only fuzz/CMakeLists.txt modified among
tracked files; both targets re-run clean 60 s each, zero artifacts.