
Cargo उप-कमांड जो libFuzzer के साथ कवरेज-निर्देशित Rust फ़ज़िंग के लिए है: फ़ज़ टार्गेट्स बनाएँ और चलाएँ, विफलताओं और कॉर्पोरा को न्यूनतम करें, और कवरेज रिपोर्ट करें।
cargo fuzzlibFuzzer के साथ फ़ज़िंग के लिए एक cargo उप-कमांड! उपयोग में आसान!
$ cargo install cargo-fuzz
नोट: libFuzzer को LLVM सैनिटाइज़र समर्थन की आवश्यकता होती है, इसलिए यह केवल x86-64 और Aarch64 पर,
और केवल Unix-जैसे ऑपरेटिंग सिस्टम (Windows नहीं) पर काम करता है। चूँकि यह कुछ
अस्थिर कमांड-लाइन फ़्लैग का उपयोग करता है, इसके लिए nightly कंपाइलर की भी आवश्यकता होती है। आपको C++11 समर्थन वाले C++ कंपाइलर की भी आवश्यकता होगी।
cargo fuzz initअपने crate के लिए cargo fuzz प्रोजेक्ट आरंभ करें!
Cargo.toml में fuzz निर्देशिका को workspace.members में जोड़ेंfuzz निर्देशिका किसी मौजूदा workspace का हिस्सा (डिफ़ॉल्ट) हो सकती है
या एक स्वतंत्र workspace का उपयोग कर सकती है। यदि बाद वाला चाहिए, तो आप
cargo fuzz init --fuzzing-workspace=true का उपयोग कर सकते हैं।
cargo fuzz add <target>एक नया फ़ज़िंग टारगेट बनाएँ!
cargo fuzz run <target>एक फ़ज़िंग टारगेट चलाएँ और बग ढूँढें!
cargo fuzz fmt <target> <input>किसी टेस्ट केस के लिए std::fmt::Debug आउटपुट प्रिंट करें। यह तब उपयोगी है जब आपका फ़ज़ टारगेट
एक Arbitrary इनपुट लेता है!
cargo fuzz tmin <target> <input>कोई विफल इनपुट मिला? आसान डीबगिंग के लिए इसे उस सबसे छोटे इनपुट में संक्षिप्त करें जो उस विफलता का कारण बनता है!
cargo fuzz cmin <target>अपने इनपुट फ़ाइलों के corpus को संक्षिप्त करें!
cargo fuzz coverage <target>फ़ज़ किए गए प्रोग्राम पर कवरेज जानकारी उत्पन्न करें!
प्रलेखन Rust Fuzz Book में पाया जा सकता है।
आप --help के साथ उपलब्ध सभी कमांड-लाइन विकल्प भी हमेशा
पा सकते हैं:
$ cargo fuzz --help
ट्रॉफी केस में cargo fuzz (और अन्य) द्वारा
पाए गए बगों की सूची है। क्या cargo fuzz और libFuzzer ने आपके लिए कोई बग खोजा?
इसे ट्रॉफी केस में जोड़ें!
cargo-fuzz को MIT लाइसेंस और Apache License (Version 2.0) दोनों की शर्तों के तहत वितरित किया जाता है।
विवरण के लिए LICENSE-APACHE और LICENSE-MIT देखें।