What problem does it solve?
It solves the problem of missing crashes and low coverage caused by poorly written fuzzing harnesses that fail to correctly parse inputs or stay reproducible across iterations.
Core Features & Use Cases
- Input parsing and routing to the SUT: Converts raw fuzzer bytes into meaningful typed inputs and calls the correct target entry points.
- Determinism and edge-case safety: Adds size validation, avoids non-deterministic behavior, and ensures harness logic won’t crash independently.
- Coverage-focused harness patterns: Supports minimal harnesses, structured extraction (e.g., FuzzedDataProvider), and interleaved fuzzing to exercise multiple operations.
Use case example: You have a complex file parser or protocol handler that rarely reaches deep code paths during fuzzing; use this guidance to design a harness that validates input sizes, extracts structured fields, and calls the right parsing functions so the fuzzer can explore more of the system.
Quick Start
Ask the harness-writing skill to help you design a deterministic fuzzing harness for a new target function by identifying suitable entry points, adding input validation, and structuring the raw fuzzer bytes into the exact parameters your SUT expects.