How the fuzzers work
Go fuzzing is native (
func FuzzXxx(f *testing.F)). Targets cover the bytes that arrive from an untrusted peer: attestation tokens, TPM quote/attest blobs, event logs, certificates, signed policies, and the enrollment wire protocol. Each target seeds from its own encoder and asserts the real contract.C fuzzers are libFuzzer harnesses under
fuzz/, onefuzz_<name>.cper target, built bymake fuzz-*(or all at once withmake fuzz-all); they link the agent sources undersrc/agent/that they exercise.Go fuzz functions stay in-package -- Go cannot reach unexported code from another directory -- so each lives in a
fuzz_<name>_test.gofile beside the code it covers, sharing the samefuzz_prefix as the C harnesses.Syzkaller loads the production BPF LSM object and attaches every hook in enforce mode inside a guest, so
syz-executor's syscalls actually traverse the LOTA kernel surface. It runs againstlota-next.