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