
Sottocomando di Cargo per il fuzzing di Rust guidato dalla copertura con libFuzzer: creare ed eseguire fuzz target, minimizzare i fallimenti e i corpora, e riportare la copertura.
cargo fuzzUn sottocomando cargo per il fuzzing con libFuzzer! Facile da usare!
$ cargo install cargo-fuzz
Nota: libFuzzer richiede il supporto dei sanitizer LLVM, quindi funziona solo su x86-64 e Aarch64,
e solo su sistemi operativi Unix-like (non Windows). Richiede anche un compilatore nightly poiché usa alcune
flag della riga di comando instabili. Servirà anche un compilatore C++ con supporto C++11.
cargo fuzz initInizializza un progetto cargo fuzz per la tua crate!
fuzz a workspace.members nella Cargo.toml principaleLa directory fuzz può essere parte di un workspace esistente (predefinito)
oppure usare un workspace indipendente. Se si desidera quest'ultima opzione, puoi usare
cargo fuzz init --fuzzing-workspace=true.
cargo fuzz add <target>Crea un nuovo target di fuzzing!
cargo fuzz run <target>Esegui un target di fuzzing e trova bug!
cargo fuzz fmt <target> <input>Stampa l'output std::fmt::Debug per un caso di test. Utile quando il tuo target di fuzz
accetta un input Arbitrary!
cargo fuzz tmin <target> <input>Trovato un input che causa un fallimento? Riducilo all'input più piccolo che causa quel fallimento per semplificare il debug!
cargo fuzz cmin <target>Riduci il tuo corpus di file di input!
cargo fuzz coverage <target>Genera informazioni di copertura sul programma sottoposto a fuzzing!
La documentazione è disponibile nel Rust Fuzz Book.
Puoi anche trovare tutte le opzioni della riga di comando disponibili con
--help:
$ cargo fuzz --help
La vetrina dei trofei contiene un elenco di bug
trovati da cargo fuzz (e altri). cargo fuzz e libFuzzer hanno trovato un bug
per te? Aggiungilo alla vetrina dei trofei!
cargo-fuzz è distribuito secondo i termini sia della licenza MIT che della
Apache License (Versione 2.0).
Vedi LICENSE-APACHE e LICENSE-MIT per i dettagli.