xref: /cloud-hypervisor/docs/fuzzing.md (revision 42e9632c53d14cd0040db4952d40ba806c4b6ee9)
14d878418SRob Bradford# Fuzzing in Cloud Hypervisor
24d878418SRob Bradford
34d878418SRob BradfordCloud Hypervisor uses [cargo-fuzz](https://github.com/rust-fuzz/cargo-fuzz) for fuzzing individual components.
44d878418SRob Bradford
5*42e9632cSJosh SorefThe fuzzers are in the `fuzz/fuzz_targets` directory
64d878418SRob Bradford
74d878418SRob Bradford## Preparation
84d878418SRob Bradford
94d878418SRob BradfordSwitch to nightly:
104d878418SRob Bradford
114d878418SRob Bradford````
124d878418SRob Bradfordrustup override set nightly
134d878418SRob Bradford````
144d878418SRob Bradford
154d878418SRob BradfordInstall `cargo fuzz`:
164d878418SRob Bradford
174d878418SRob Bradford```
184d878418SRob Bradfordcargo install cargo-fuzz
194d878418SRob Bradford```
204d878418SRob Bradford
214d878418SRob Bradford## Running the fuzzers
224d878418SRob Bradford
23b02df13aSAnatol Belskie.g. To run the `block` fuzzer using all available CPUs:
244d878418SRob Bradford
254d878418SRob Bradford```
26b02df13aSAnatol Belskicargo fuzz run block -j `nproc`
274d878418SRob Bradford```
284d878418SRob Bradford
294d878418SRob Bradford## Adding a new fuzzer
304d878418SRob Bradford
314d878418SRob Bradford```
324d878418SRob Bradfordcargo fuzz add <new_fuzzer>
334d878418SRob Bradford```
344d878418SRob Bradford
354d878418SRob BradfordInspiration for fuzzers can be found in [crosvm](https://chromium.googlesource.com/chromiumos/platform/crosvm/+/refs/heads/master/fuzz/)
36