[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-trail-of-bits-cargo-fuzz":3,"mdc--1kniqt-key":38,"related-repo-trail-of-bits-cargo-fuzz":3379,"related-org-trail-of-bits-cargo-fuzz":3473},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":12,"stars":26,"repoUrl":27,"updatedAt":28,"license":29,"forks":30,"topics":31,"repo":33,"sourceUrl":36,"mdContent":37},"cargo-fuzz","fuzz Rust projects with cargo-fuzz","cargo-fuzz is the de facto fuzzing tool for Rust projects using Cargo. Use for fuzzing Rust code with libFuzzer backend.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},"trail-of-bits","Trail of Bits","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Ftrail-of-bits.png","trailofbits",[13,17,20,23],{"name":14,"slug":15,"type":16},"Security","security","tag",{"name":18,"slug":19,"type":16},"Engineering","engineering",{"name":21,"slug":22,"type":16},"Rust","rust",{"name":24,"slug":25,"type":16},"Testing","testing",6139,"https:\u002F\u002Fgithub.com\u002Ftrailofbits\u002Fskills","2026-07-17T06:05:18.942184",null,541,[32],"agent-skills",{"repoUrl":27,"stars":26,"forks":30,"topics":34,"description":35},[32],"Trail of Bits Claude Code skills for security research, vulnerability detection, and audit workflows","https:\u002F\u002Fgithub.com\u002Ftrailofbits\u002Fskills\u002Ftree\u002FHEAD\u002Fplugins\u002Ftesting-handbook-skills\u002Fskills\u002Fcargo-fuzz","---\nname: cargo-fuzz\ntype: fuzzer\ndescription: >\n  cargo-fuzz is the de facto fuzzing tool for Rust projects using Cargo.\n  Use for fuzzing Rust code with libFuzzer backend.\n---\n\n# cargo-fuzz\n\ncargo-fuzz is the de facto choice for fuzzing Rust projects when using Cargo. It uses libFuzzer as the backend and provides a convenient Cargo subcommand that automatically enables relevant compilation flags for your Rust project, including support for sanitizers like AddressSanitizer.\n\n## When to Use\n\ncargo-fuzz is currently the primary and most mature fuzzing solution for Rust projects using Cargo.\n\n| Fuzzer | Best For | Complexity |\n|--------|----------|------------|\n| cargo-fuzz | Cargo-based Rust projects, quick setup | Low |\n| AFL++ | Multi-core fuzzing, non-Cargo projects | Medium |\n| LibAFL | Custom fuzzers, research, advanced use cases | High |\n\n**Choose cargo-fuzz when:**\n- Your project uses Cargo (required)\n- You want simple, quick setup with minimal configuration\n- You need integrated sanitizer support\n- You're fuzzing Rust code with or without unsafe blocks\n\n## Quick Start\n\n```rust\n#![no_main]\n\nuse libfuzzer_sys::fuzz_target;\n\nfn harness(data: &[u8]) {\n    your_project::check_buf(data);\n}\n\nfuzz_target!(|data: &[u8]| {\n    harness(data);\n});\n```\n\nInitialize and run:\n```bash\ncargo fuzz init\n# Edit fuzz\u002Ffuzz_targets\u002Ffuzz_target_1.rs with your harness\ncargo +nightly fuzz run fuzz_target_1\n```\n\n## Installation\n\ncargo-fuzz requires the nightly Rust toolchain because it uses features only available in nightly.\n\n### Prerequisites\n\n- Rust and Cargo installed via [rustup](https:\u002F\u002Frustup.rs\u002F)\n- Nightly toolchain\n\n### Linux\u002FmacOS\n\n```bash\n# Install nightly toolchain\nrustup install nightly\n\n# Install cargo-fuzz\ncargo install cargo-fuzz\n```\n\n### Verification\n\n```bash\ncargo +nightly --version\ncargo fuzz --version\n```\n\n## Writing a Harness\n\n### Project Structure\n\ncargo-fuzz works best when your code is structured as a library crate. If you have a binary project, split your `main.rs` into:\n\n```text\nsrc\u002Fmain.rs  # Entry point (main function)\nsrc\u002Flib.rs   # Code to fuzz (public functions)\nCargo.toml\n```\n\nInitialize fuzzing:\n```bash\ncargo fuzz init\n```\n\nThis creates:\n```text\nfuzz\u002F\n├── Cargo.toml\n└── fuzz_targets\u002F\n    └── fuzz_target_1.rs\n```\n\n### Harness Structure\n\n```rust\n#![no_main]\n\nuse libfuzzer_sys::fuzz_target;\n\nfn harness(data: &[u8]) {\n    \u002F\u002F 1. Validate input size if needed\n    if data.is_empty() {\n        return;\n    }\n\n    \u002F\u002F 2. Call target function with fuzz data\n    your_project::target_function(data);\n}\n\nfuzz_target!(|data: &[u8]| {\n    harness(data);\n});\n```\n\n### Harness Rules\n\n| Do | Don't |\n|----|-------|\n| Structure code as library crate | Keep everything in main.rs |\n| Use `fuzz_target!` macro | Write custom main function |\n| Handle `Result::Err` gracefully | Panic on expected errors |\n| Keep harness deterministic | Use random number generators |\n\n> **See Also:** For detailed harness writing techniques and structure-aware fuzzing with the\n> `arbitrary` crate, see the **fuzz-harness-writing** technique skill.\n\n## Structure-Aware Fuzzing\n\ncargo-fuzz integrates with the [arbitrary](https:\u002F\u002Fgithub.com\u002Frust-fuzz\u002Farbitrary) crate for structure-aware fuzzing:\n\n```rust\n\u002F\u002F In your library crate\nuse arbitrary::Arbitrary;\n\n#[derive(Debug, Arbitrary)]\npub struct Name {\n    data: String\n}\n```\n\n```rust\n\u002F\u002F In your fuzz target\n#![no_main]\nuse libfuzzer_sys::fuzz_target;\n\nfuzz_target!(|data: your_project::Name| {\n    data.check_buf();\n});\n```\n\nAdd to your library's `Cargo.toml`:\n```toml\n[dependencies]\narbitrary = { version = \"1\", features = [\"derive\"] }\n```\n\n## Running Campaigns\n\n### Basic Run\n\n```bash\ncargo +nightly fuzz run fuzz_target_1\n```\n\n### Without Sanitizers (Safe Rust)\n\nIf your project doesn't use unsafe Rust, disable sanitizers for 2x performance boost:\n\n```bash\ncargo +nightly fuzz run --sanitizer none fuzz_target_1\n```\n\nCheck if your project uses unsafe code:\n```bash\ncargo install cargo-geiger\ncargo geiger\n```\n\n### Re-executing Test Cases\n\n```bash\n# Run a specific test case (e.g., a crash)\ncargo +nightly fuzz run fuzz_target_1 fuzz\u002Fartifacts\u002Ffuzz_target_1\u002Fcrash-\u003Chash>\n\n# Run all corpus entries without fuzzing\ncargo +nightly fuzz run fuzz_target_1 fuzz\u002Fcorpus\u002Ffuzz_target_1 -- -runs=0\n```\n\n### Using Dictionaries\n\n```bash\ncargo +nightly fuzz run fuzz_target_1 -- -dict=.\u002Fdict.dict\n```\n\n### Interpreting Output\n\n| Output | Meaning |\n|--------|---------|\n| `NEW` | New coverage-increasing input discovered |\n| `pulse` | Periodic status update |\n| `INITED` | Fuzzer initialized successfully |\n| Crash with stack trace | Bug found, saved to `fuzz\u002Fartifacts\u002F` |\n\nCorpus location: `fuzz\u002Fcorpus\u002Ffuzz_target_1\u002F`\nCrashes location: `fuzz\u002Fartifacts\u002Ffuzz_target_1\u002F`\n\n## Sanitizer Integration\n\n### AddressSanitizer (ASan)\n\nASan is enabled by default and detects memory errors:\n\n```bash\ncargo +nightly fuzz run fuzz_target_1\n```\n\n### Disabling Sanitizers\n\nFor pure safe Rust (no unsafe blocks in your code or dependencies):\n\n```bash\ncargo +nightly fuzz run --sanitizer none fuzz_target_1\n```\n\n**Performance impact:** ASan adds ~2x overhead. Disable for safe Rust to improve fuzzing speed.\n\n### Checking for Unsafe Code\n\n```bash\ncargo install cargo-geiger\ncargo geiger\n```\n\n> **See Also:** For detailed sanitizer configuration, flags, and troubleshooting,\n> see the **address-sanitizer** technique skill.\n\n## Coverage Analysis\n\ncargo-fuzz integrates with Rust's coverage tools to analyze fuzzing effectiveness.\n\n### Prerequisites\n\n```bash\nrustup toolchain install nightly --component llvm-tools-preview\ncargo install cargo-binutils\ncargo install rustfilt\n```\n\n### Generating Coverage Reports\n\n```bash\n# Generate coverage data from corpus\ncargo +nightly fuzz coverage fuzz_target_1\n```\n\nCreate coverage generation script:\n\n```bash\ncat \u003C\u003C'EOF' > .\u002Fgenerate_html\n#!\u002Fbin\u002Fsh\nif [ $# -lt 1 ]; then\n    echo \"Error: Name of fuzz target is required.\"\n    echo \"Usage: $0 fuzz_target [sources...]\"\n    exit 1\nfi\nFUZZ_TARGET=\"$1\"\nshift\nSRC_FILTER=\"$@\"\nTARGET=$(rustc -vV | sed -n 's|host: ||p')\ncargo +nightly cov -- show -Xdemangler=rustfilt \\\n  \"target\u002F$TARGET\u002Fcoverage\u002F$TARGET\u002Frelease\u002F$FUZZ_TARGET\" \\\n  -instr-profile=\"fuzz\u002Fcoverage\u002F$FUZZ_TARGET\u002Fcoverage.profdata\"  \\\n  -show-line-counts-or-regions -show-instantiations  \\\n  -format=html -o fuzz_html\u002F $SRC_FILTER\nEOF\nchmod +x .\u002Fgenerate_html\n```\n\nGenerate HTML report:\n```bash\n.\u002Fgenerate_html fuzz_target_1 src\u002Flib.rs\n```\n\nHTML report saved to: `fuzz_html\u002F`\n\n> **See Also:** For detailed coverage analysis techniques and systematic coverage improvement,\n> see the **coverage-analysis** technique skill.\n\n## Advanced Usage\n\n### Tips and Tricks\n\n| Tip | Why It Helps |\n|-----|--------------|\n| Start with a seed corpus | Dramatically speeds up initial coverage discovery |\n| Use `--sanitizer none` for safe Rust | 2x performance improvement |\n| Check coverage regularly | Identifies gaps in harness or seed corpus |\n| Use dictionaries for parsers | Helps overcome magic value checks |\n| Structure code as library | Required for cargo-fuzz integration |\n\n### libFuzzer Options\n\nPass options to libFuzzer after `--`:\n\n```bash\n# See all options\ncargo +nightly fuzz run fuzz_target_1 -- -help=1\n\n# Set timeout per run\ncargo +nightly fuzz run fuzz_target_1 -- -timeout=10\n\n# Use dictionary\ncargo +nightly fuzz run fuzz_target_1 -- -dict=dict.dict\n\n# Limit maximum input size\ncargo +nightly fuzz run fuzz_target_1 -- -max_len=1024\n```\n\n### Multi-Core Fuzzing\n\n```bash\n# Experimental forking support (not recommended)\ncargo +nightly fuzz run --jobs 1 fuzz_target_1\n```\n\nNote: The multi-core fuzzing feature is experimental and not recommended. For parallel fuzzing, consider running multiple instances manually or using AFL++.\n\n## Real-World Examples\n\n### Example: ogg Crate\n\nThe [ogg crate](https:\u002F\u002Fgithub.com\u002FRustAudio\u002Fogg) parses Ogg media container files. Parsers are excellent fuzzing targets because they handle untrusted data.\n\n```bash\n# Clone and initialize\ngit clone https:\u002F\u002Fgithub.com\u002FRustAudio\u002Fogg.git\ncd ogg\u002F\ncargo fuzz init\n```\n\nHarness at `fuzz\u002Ffuzz_targets\u002Ffuzz_target_1.rs`:\n\n```rust\n#![no_main]\n\nuse ogg::{PacketReader, PacketWriter};\nuse ogg::writing::PacketWriteEndInfo;\nuse std::io::Cursor;\nuse libfuzzer_sys::fuzz_target;\n\nfn harness(data: &[u8]) {\n    let mut pck_rdr = PacketReader::new(Cursor::new(data.to_vec()));\n    pck_rdr.delete_unread_packets();\n\n    let output = Vec::new();\n    let mut pck_wtr = PacketWriter::new(Cursor::new(output));\n\n    if let Ok(_) = pck_rdr.read_packet() {\n        if let Ok(r) = pck_rdr.read_packet() {\n            match r {\n                Some(pck) => {\n                    let inf = if pck.last_in_stream() {\n                        PacketWriteEndInfo::EndStream\n                    } else if pck.last_in_page() {\n                        PacketWriteEndInfo::EndPage\n                    } else {\n                        PacketWriteEndInfo::NormalPacket\n                    };\n                    let stream_serial = pck.stream_serial();\n                    let absgp_page = pck.absgp_page();\n                    let _ = pck_wtr.write_packet(\n                        pck.data, stream_serial, inf, absgp_page\n                    );\n                }\n                None => return,\n            }\n        }\n    }\n}\n\nfuzz_target!(|data: &[u8]| {\n    harness(data);\n});\n```\n\nSeed the corpus:\n```bash\nmkdir fuzz\u002Fcorpus\u002Ffuzz_target_1\u002F\ncurl -o fuzz\u002Fcorpus\u002Ffuzz_target_1\u002F320x240.ogg \\\n  https:\u002F\u002Fcommons.wikimedia.org\u002Fwiki\u002FFile:320x240.ogg\n```\n\nRun:\n```bash\ncargo +nightly fuzz run fuzz_target_1\n```\n\nAnalyze coverage:\n```bash\ncargo +nightly fuzz coverage fuzz_target_1\n.\u002Fgenerate_html fuzz_target_1 src\u002Flib.rs\n```\n\n## Troubleshooting\n\n| Problem | Cause | Solution |\n|---------|-------|----------|\n| \"requires nightly\" error | Using stable toolchain | Use `cargo +nightly fuzz` |\n| Slow fuzzing performance | ASan enabled for safe Rust | Add `--sanitizer none` flag |\n| \"cannot find binary\" | No library crate | Move code from `main.rs` to `lib.rs` |\n| Sanitizer compilation issues | Wrong nightly version | Try different nightly: `rustup install nightly-2024-01-01` |\n| Low coverage | Missing seed corpus | Add sample inputs to `fuzz\u002Fcorpus\u002Ffuzz_target_1\u002F` |\n| Magic value not found | No dictionary | Create dictionary file with magic values |\n\n## Related Skills\n\n### Technique Skills\n\n| Skill | Use Case |\n|-------|----------|\n| **fuzz-harness-writing** | Structure-aware fuzzing with `arbitrary` crate |\n| **address-sanitizer** | Understanding ASan output and configuration |\n| **coverage-analysis** | Measuring and improving fuzzing effectiveness |\n| **fuzzing-corpus** | Building and managing seed corpora |\n| **fuzzing-dictionaries** | Creating dictionaries for format-aware fuzzing |\n\n### Related Fuzzers\n\n| Skill | When to Consider |\n|-------|------------------|\n| **libfuzzer** | Fuzzing C\u002FC++ code with similar workflow |\n| **aflpp** | Multi-core fuzzing or non-Cargo Rust projects |\n| **libafl** | Advanced fuzzing research or custom fuzzer development |\n\n## Resources\n\n**[Rust Fuzz Book - cargo-fuzz](https:\u002F\u002Frust-fuzz.github.io\u002Fbook\u002Fcargo-fuzz.html)**\nOfficial documentation for cargo-fuzz covering installation, usage, and advanced features.\n\n**[arbitrary crate documentation](https:\u002F\u002Fdocs.rs\u002Farbitrary\u002Flatest\u002Farbitrary\u002F)**\nGuide to structure-aware fuzzing with automatic derivation for Rust types.\n\n**[cargo-fuzz GitHub Repository](https:\u002F\u002Fgithub.com\u002Frust-fuzz\u002Fcargo-fuzz)**\nSource code, issue tracker, and examples for cargo-fuzz.\n",{"data":39,"body":41},{"name":4,"type":40,"description":6},"fuzzer",{"type":42,"children":43},"root",[44,51,57,64,69,155,164,189,195,306,311,375,381,386,393,415,421,484,490,528,534,540,553,563,568,590,595,604,610,748,754,844,873,879,892,953,1012,1025,1050,1056,1062,1092,1098,1103,1143,1148,1183,1189,1308,1314,1353,1359,1451,1470,1476,1482,1487,1516,1522,1527,1564,1574,1580,1612,1630,1636,1641,1646,1716,1722,1761,1766,1947,1952,1976,1987,2004,2010,2016,2110,2116,2128,2316,2322,2371,2376,2382,2388,2402,2464,2476,2812,2817,2868,2873,2902,2907,2952,2958,3129,3135,3141,3247,3253,3322,3328,3343,3358,3373],{"type":45,"tag":46,"props":47,"children":48},"element","h1",{"id":4},[49],{"type":50,"value":4},"text",{"type":45,"tag":52,"props":53,"children":54},"p",{},[55],{"type":50,"value":56},"cargo-fuzz is the de facto choice for fuzzing Rust projects when using Cargo. It uses libFuzzer as the backend and provides a convenient Cargo subcommand that automatically enables relevant compilation flags for your Rust project, including support for sanitizers like AddressSanitizer.",{"type":45,"tag":58,"props":59,"children":61},"h2",{"id":60},"when-to-use",[62],{"type":50,"value":63},"When to Use",{"type":45,"tag":52,"props":65,"children":66},{},[67],{"type":50,"value":68},"cargo-fuzz is currently the primary and most mature fuzzing solution for Rust projects using Cargo.",{"type":45,"tag":70,"props":71,"children":72},"table",{},[73,97],{"type":45,"tag":74,"props":75,"children":76},"thead",{},[77],{"type":45,"tag":78,"props":79,"children":80},"tr",{},[81,87,92],{"type":45,"tag":82,"props":83,"children":84},"th",{},[85],{"type":50,"value":86},"Fuzzer",{"type":45,"tag":82,"props":88,"children":89},{},[90],{"type":50,"value":91},"Best For",{"type":45,"tag":82,"props":93,"children":94},{},[95],{"type":50,"value":96},"Complexity",{"type":45,"tag":98,"props":99,"children":100},"tbody",{},[101,119,137],{"type":45,"tag":78,"props":102,"children":103},{},[104,109,114],{"type":45,"tag":105,"props":106,"children":107},"td",{},[108],{"type":50,"value":4},{"type":45,"tag":105,"props":110,"children":111},{},[112],{"type":50,"value":113},"Cargo-based Rust projects, quick setup",{"type":45,"tag":105,"props":115,"children":116},{},[117],{"type":50,"value":118},"Low",{"type":45,"tag":78,"props":120,"children":121},{},[122,127,132],{"type":45,"tag":105,"props":123,"children":124},{},[125],{"type":50,"value":126},"AFL++",{"type":45,"tag":105,"props":128,"children":129},{},[130],{"type":50,"value":131},"Multi-core fuzzing, non-Cargo projects",{"type":45,"tag":105,"props":133,"children":134},{},[135],{"type":50,"value":136},"Medium",{"type":45,"tag":78,"props":138,"children":139},{},[140,145,150],{"type":45,"tag":105,"props":141,"children":142},{},[143],{"type":50,"value":144},"LibAFL",{"type":45,"tag":105,"props":146,"children":147},{},[148],{"type":50,"value":149},"Custom fuzzers, research, advanced use cases",{"type":45,"tag":105,"props":151,"children":152},{},[153],{"type":50,"value":154},"High",{"type":45,"tag":52,"props":156,"children":157},{},[158],{"type":45,"tag":159,"props":160,"children":161},"strong",{},[162],{"type":50,"value":163},"Choose cargo-fuzz when:",{"type":45,"tag":165,"props":166,"children":167},"ul",{},[168,174,179,184],{"type":45,"tag":169,"props":170,"children":171},"li",{},[172],{"type":50,"value":173},"Your project uses Cargo (required)",{"type":45,"tag":169,"props":175,"children":176},{},[177],{"type":50,"value":178},"You want simple, quick setup with minimal configuration",{"type":45,"tag":169,"props":180,"children":181},{},[182],{"type":50,"value":183},"You need integrated sanitizer support",{"type":45,"tag":169,"props":185,"children":186},{},[187],{"type":50,"value":188},"You're fuzzing Rust code with or without unsafe blocks",{"type":45,"tag":58,"props":190,"children":192},{"id":191},"quick-start",[193],{"type":50,"value":194},"Quick Start",{"type":45,"tag":196,"props":197,"children":201},"pre",{"className":198,"code":199,"language":22,"meta":200,"style":200},"language-rust shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","#![no_main]\n\nuse libfuzzer_sys::fuzz_target;\n\nfn harness(data: &[u8]) {\n    your_project::check_buf(data);\n}\n\nfuzz_target!(|data: &[u8]| {\n    harness(data);\n});\n","",[202],{"type":45,"tag":203,"props":204,"children":205},"code",{"__ignoreMap":200},[206,217,227,236,244,253,262,271,279,288,297],{"type":45,"tag":207,"props":208,"children":211},"span",{"class":209,"line":210},"line",1,[212],{"type":45,"tag":207,"props":213,"children":214},{},[215],{"type":50,"value":216},"#![no_main]\n",{"type":45,"tag":207,"props":218,"children":220},{"class":209,"line":219},2,[221],{"type":45,"tag":207,"props":222,"children":224},{"emptyLinePlaceholder":223},true,[225],{"type":50,"value":226},"\n",{"type":45,"tag":207,"props":228,"children":230},{"class":209,"line":229},3,[231],{"type":45,"tag":207,"props":232,"children":233},{},[234],{"type":50,"value":235},"use libfuzzer_sys::fuzz_target;\n",{"type":45,"tag":207,"props":237,"children":239},{"class":209,"line":238},4,[240],{"type":45,"tag":207,"props":241,"children":242},{"emptyLinePlaceholder":223},[243],{"type":50,"value":226},{"type":45,"tag":207,"props":245,"children":247},{"class":209,"line":246},5,[248],{"type":45,"tag":207,"props":249,"children":250},{},[251],{"type":50,"value":252},"fn harness(data: &[u8]) {\n",{"type":45,"tag":207,"props":254,"children":256},{"class":209,"line":255},6,[257],{"type":45,"tag":207,"props":258,"children":259},{},[260],{"type":50,"value":261},"    your_project::check_buf(data);\n",{"type":45,"tag":207,"props":263,"children":265},{"class":209,"line":264},7,[266],{"type":45,"tag":207,"props":267,"children":268},{},[269],{"type":50,"value":270},"}\n",{"type":45,"tag":207,"props":272,"children":274},{"class":209,"line":273},8,[275],{"type":45,"tag":207,"props":276,"children":277},{"emptyLinePlaceholder":223},[278],{"type":50,"value":226},{"type":45,"tag":207,"props":280,"children":282},{"class":209,"line":281},9,[283],{"type":45,"tag":207,"props":284,"children":285},{},[286],{"type":50,"value":287},"fuzz_target!(|data: &[u8]| {\n",{"type":45,"tag":207,"props":289,"children":291},{"class":209,"line":290},10,[292],{"type":45,"tag":207,"props":293,"children":294},{},[295],{"type":50,"value":296},"    harness(data);\n",{"type":45,"tag":207,"props":298,"children":300},{"class":209,"line":299},11,[301],{"type":45,"tag":207,"props":302,"children":303},{},[304],{"type":50,"value":305},"});\n",{"type":45,"tag":52,"props":307,"children":308},{},[309],{"type":50,"value":310},"Initialize and run:",{"type":45,"tag":196,"props":312,"children":316},{"className":313,"code":314,"language":315,"meta":200,"style":200},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","cargo fuzz init\n# Edit fuzz\u002Ffuzz_targets\u002Ffuzz_target_1.rs with your harness\ncargo +nightly fuzz run fuzz_target_1\n","bash",[317],{"type":45,"tag":203,"props":318,"children":319},{"__ignoreMap":200},[320,340,349],{"type":45,"tag":207,"props":321,"children":322},{"class":209,"line":210},[323,329,335],{"type":45,"tag":207,"props":324,"children":326},{"style":325},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[327],{"type":50,"value":328},"cargo",{"type":45,"tag":207,"props":330,"children":332},{"style":331},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[333],{"type":50,"value":334}," fuzz",{"type":45,"tag":207,"props":336,"children":337},{"style":331},[338],{"type":50,"value":339}," init\n",{"type":45,"tag":207,"props":341,"children":342},{"class":209,"line":219},[343],{"type":45,"tag":207,"props":344,"children":346},{"style":345},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[347],{"type":50,"value":348},"# Edit fuzz\u002Ffuzz_targets\u002Ffuzz_target_1.rs with your harness\n",{"type":45,"tag":207,"props":350,"children":351},{"class":209,"line":229},[352,356,361,365,370],{"type":45,"tag":207,"props":353,"children":354},{"style":325},[355],{"type":50,"value":328},{"type":45,"tag":207,"props":357,"children":358},{"style":331},[359],{"type":50,"value":360}," +nightly",{"type":45,"tag":207,"props":362,"children":363},{"style":331},[364],{"type":50,"value":334},{"type":45,"tag":207,"props":366,"children":367},{"style":331},[368],{"type":50,"value":369}," run",{"type":45,"tag":207,"props":371,"children":372},{"style":331},[373],{"type":50,"value":374}," fuzz_target_1\n",{"type":45,"tag":58,"props":376,"children":378},{"id":377},"installation",[379],{"type":50,"value":380},"Installation",{"type":45,"tag":52,"props":382,"children":383},{},[384],{"type":50,"value":385},"cargo-fuzz requires the nightly Rust toolchain because it uses features only available in nightly.",{"type":45,"tag":387,"props":388,"children":390},"h3",{"id":389},"prerequisites",[391],{"type":50,"value":392},"Prerequisites",{"type":45,"tag":165,"props":394,"children":395},{},[396,410],{"type":45,"tag":169,"props":397,"children":398},{},[399,401],{"type":50,"value":400},"Rust and Cargo installed via ",{"type":45,"tag":402,"props":403,"children":407},"a",{"href":404,"rel":405},"https:\u002F\u002Frustup.rs\u002F",[406],"nofollow",[408],{"type":50,"value":409},"rustup",{"type":45,"tag":169,"props":411,"children":412},{},[413],{"type":50,"value":414},"Nightly toolchain",{"type":45,"tag":387,"props":416,"children":418},{"id":417},"linuxmacos",[419],{"type":50,"value":420},"Linux\u002FmacOS",{"type":45,"tag":196,"props":422,"children":424},{"className":313,"code":423,"language":315,"meta":200,"style":200},"# Install nightly toolchain\nrustup install nightly\n\n# Install cargo-fuzz\ncargo install cargo-fuzz\n",[425],{"type":45,"tag":203,"props":426,"children":427},{"__ignoreMap":200},[428,436,453,460,468],{"type":45,"tag":207,"props":429,"children":430},{"class":209,"line":210},[431],{"type":45,"tag":207,"props":432,"children":433},{"style":345},[434],{"type":50,"value":435},"# Install nightly toolchain\n",{"type":45,"tag":207,"props":437,"children":438},{"class":209,"line":219},[439,443,448],{"type":45,"tag":207,"props":440,"children":441},{"style":325},[442],{"type":50,"value":409},{"type":45,"tag":207,"props":444,"children":445},{"style":331},[446],{"type":50,"value":447}," install",{"type":45,"tag":207,"props":449,"children":450},{"style":331},[451],{"type":50,"value":452}," nightly\n",{"type":45,"tag":207,"props":454,"children":455},{"class":209,"line":229},[456],{"type":45,"tag":207,"props":457,"children":458},{"emptyLinePlaceholder":223},[459],{"type":50,"value":226},{"type":45,"tag":207,"props":461,"children":462},{"class":209,"line":238},[463],{"type":45,"tag":207,"props":464,"children":465},{"style":345},[466],{"type":50,"value":467},"# Install cargo-fuzz\n",{"type":45,"tag":207,"props":469,"children":470},{"class":209,"line":246},[471,475,479],{"type":45,"tag":207,"props":472,"children":473},{"style":325},[474],{"type":50,"value":328},{"type":45,"tag":207,"props":476,"children":477},{"style":331},[478],{"type":50,"value":447},{"type":45,"tag":207,"props":480,"children":481},{"style":331},[482],{"type":50,"value":483}," cargo-fuzz\n",{"type":45,"tag":387,"props":485,"children":487},{"id":486},"verification",[488],{"type":50,"value":489},"Verification",{"type":45,"tag":196,"props":491,"children":493},{"className":313,"code":492,"language":315,"meta":200,"style":200},"cargo +nightly --version\ncargo fuzz --version\n",[494],{"type":45,"tag":203,"props":495,"children":496},{"__ignoreMap":200},[497,513],{"type":45,"tag":207,"props":498,"children":499},{"class":209,"line":210},[500,504,508],{"type":45,"tag":207,"props":501,"children":502},{"style":325},[503],{"type":50,"value":328},{"type":45,"tag":207,"props":505,"children":506},{"style":331},[507],{"type":50,"value":360},{"type":45,"tag":207,"props":509,"children":510},{"style":331},[511],{"type":50,"value":512}," --version\n",{"type":45,"tag":207,"props":514,"children":515},{"class":209,"line":219},[516,520,524],{"type":45,"tag":207,"props":517,"children":518},{"style":325},[519],{"type":50,"value":328},{"type":45,"tag":207,"props":521,"children":522},{"style":331},[523],{"type":50,"value":334},{"type":45,"tag":207,"props":525,"children":526},{"style":331},[527],{"type":50,"value":512},{"type":45,"tag":58,"props":529,"children":531},{"id":530},"writing-a-harness",[532],{"type":50,"value":533},"Writing a Harness",{"type":45,"tag":387,"props":535,"children":537},{"id":536},"project-structure",[538],{"type":50,"value":539},"Project Structure",{"type":45,"tag":52,"props":541,"children":542},{},[543,545,551],{"type":50,"value":544},"cargo-fuzz works best when your code is structured as a library crate. If you have a binary project, split your ",{"type":45,"tag":203,"props":546,"children":548},{"className":547},[],[549],{"type":50,"value":550},"main.rs",{"type":50,"value":552}," into:",{"type":45,"tag":196,"props":554,"children":558},{"className":555,"code":557,"language":50,"meta":200},[556],"language-text","src\u002Fmain.rs  # Entry point (main function)\nsrc\u002Flib.rs   # Code to fuzz (public functions)\nCargo.toml\n",[559],{"type":45,"tag":203,"props":560,"children":561},{"__ignoreMap":200},[562],{"type":50,"value":557},{"type":45,"tag":52,"props":564,"children":565},{},[566],{"type":50,"value":567},"Initialize fuzzing:",{"type":45,"tag":196,"props":569,"children":571},{"className":313,"code":570,"language":315,"meta":200,"style":200},"cargo fuzz init\n",[572],{"type":45,"tag":203,"props":573,"children":574},{"__ignoreMap":200},[575],{"type":45,"tag":207,"props":576,"children":577},{"class":209,"line":210},[578,582,586],{"type":45,"tag":207,"props":579,"children":580},{"style":325},[581],{"type":50,"value":328},{"type":45,"tag":207,"props":583,"children":584},{"style":331},[585],{"type":50,"value":334},{"type":45,"tag":207,"props":587,"children":588},{"style":331},[589],{"type":50,"value":339},{"type":45,"tag":52,"props":591,"children":592},{},[593],{"type":50,"value":594},"This creates:",{"type":45,"tag":196,"props":596,"children":599},{"className":597,"code":598,"language":50,"meta":200},[556],"fuzz\u002F\n├── Cargo.toml\n└── fuzz_targets\u002F\n    └── fuzz_target_1.rs\n",[600],{"type":45,"tag":203,"props":601,"children":602},{"__ignoreMap":200},[603],{"type":50,"value":598},{"type":45,"tag":387,"props":605,"children":607},{"id":606},"harness-structure",[608],{"type":50,"value":609},"Harness Structure",{"type":45,"tag":196,"props":611,"children":613},{"className":198,"code":612,"language":22,"meta":200,"style":200},"#![no_main]\n\nuse libfuzzer_sys::fuzz_target;\n\nfn harness(data: &[u8]) {\n    \u002F\u002F 1. Validate input size if needed\n    if data.is_empty() {\n        return;\n    }\n\n    \u002F\u002F 2. Call target function with fuzz data\n    your_project::target_function(data);\n}\n\nfuzz_target!(|data: &[u8]| {\n    harness(data);\n});\n",[614],{"type":45,"tag":203,"props":615,"children":616},{"__ignoreMap":200},[617,624,631,638,645,652,660,668,676,684,691,699,708,716,724,732,740],{"type":45,"tag":207,"props":618,"children":619},{"class":209,"line":210},[620],{"type":45,"tag":207,"props":621,"children":622},{},[623],{"type":50,"value":216},{"type":45,"tag":207,"props":625,"children":626},{"class":209,"line":219},[627],{"type":45,"tag":207,"props":628,"children":629},{"emptyLinePlaceholder":223},[630],{"type":50,"value":226},{"type":45,"tag":207,"props":632,"children":633},{"class":209,"line":229},[634],{"type":45,"tag":207,"props":635,"children":636},{},[637],{"type":50,"value":235},{"type":45,"tag":207,"props":639,"children":640},{"class":209,"line":238},[641],{"type":45,"tag":207,"props":642,"children":643},{"emptyLinePlaceholder":223},[644],{"type":50,"value":226},{"type":45,"tag":207,"props":646,"children":647},{"class":209,"line":246},[648],{"type":45,"tag":207,"props":649,"children":650},{},[651],{"type":50,"value":252},{"type":45,"tag":207,"props":653,"children":654},{"class":209,"line":255},[655],{"type":45,"tag":207,"props":656,"children":657},{},[658],{"type":50,"value":659},"    \u002F\u002F 1. Validate input size if needed\n",{"type":45,"tag":207,"props":661,"children":662},{"class":209,"line":264},[663],{"type":45,"tag":207,"props":664,"children":665},{},[666],{"type":50,"value":667},"    if data.is_empty() {\n",{"type":45,"tag":207,"props":669,"children":670},{"class":209,"line":273},[671],{"type":45,"tag":207,"props":672,"children":673},{},[674],{"type":50,"value":675},"        return;\n",{"type":45,"tag":207,"props":677,"children":678},{"class":209,"line":281},[679],{"type":45,"tag":207,"props":680,"children":681},{},[682],{"type":50,"value":683},"    }\n",{"type":45,"tag":207,"props":685,"children":686},{"class":209,"line":290},[687],{"type":45,"tag":207,"props":688,"children":689},{"emptyLinePlaceholder":223},[690],{"type":50,"value":226},{"type":45,"tag":207,"props":692,"children":693},{"class":209,"line":299},[694],{"type":45,"tag":207,"props":695,"children":696},{},[697],{"type":50,"value":698},"    \u002F\u002F 2. Call target function with fuzz data\n",{"type":45,"tag":207,"props":700,"children":702},{"class":209,"line":701},12,[703],{"type":45,"tag":207,"props":704,"children":705},{},[706],{"type":50,"value":707},"    your_project::target_function(data);\n",{"type":45,"tag":207,"props":709,"children":711},{"class":209,"line":710},13,[712],{"type":45,"tag":207,"props":713,"children":714},{},[715],{"type":50,"value":270},{"type":45,"tag":207,"props":717,"children":719},{"class":209,"line":718},14,[720],{"type":45,"tag":207,"props":721,"children":722},{"emptyLinePlaceholder":223},[723],{"type":50,"value":226},{"type":45,"tag":207,"props":725,"children":727},{"class":209,"line":726},15,[728],{"type":45,"tag":207,"props":729,"children":730},{},[731],{"type":50,"value":287},{"type":45,"tag":207,"props":733,"children":735},{"class":209,"line":734},16,[736],{"type":45,"tag":207,"props":737,"children":738},{},[739],{"type":50,"value":296},{"type":45,"tag":207,"props":741,"children":743},{"class":209,"line":742},17,[744],{"type":45,"tag":207,"props":745,"children":746},{},[747],{"type":50,"value":305},{"type":45,"tag":387,"props":749,"children":751},{"id":750},"harness-rules",[752],{"type":50,"value":753},"Harness Rules",{"type":45,"tag":70,"props":755,"children":756},{},[757,773],{"type":45,"tag":74,"props":758,"children":759},{},[760],{"type":45,"tag":78,"props":761,"children":762},{},[763,768],{"type":45,"tag":82,"props":764,"children":765},{},[766],{"type":50,"value":767},"Do",{"type":45,"tag":82,"props":769,"children":770},{},[771],{"type":50,"value":772},"Don't",{"type":45,"tag":98,"props":774,"children":775},{},[776,789,810,831],{"type":45,"tag":78,"props":777,"children":778},{},[779,784],{"type":45,"tag":105,"props":780,"children":781},{},[782],{"type":50,"value":783},"Structure code as library crate",{"type":45,"tag":105,"props":785,"children":786},{},[787],{"type":50,"value":788},"Keep everything in main.rs",{"type":45,"tag":78,"props":790,"children":791},{},[792,805],{"type":45,"tag":105,"props":793,"children":794},{},[795,797,803],{"type":50,"value":796},"Use ",{"type":45,"tag":203,"props":798,"children":800},{"className":799},[],[801],{"type":50,"value":802},"fuzz_target!",{"type":50,"value":804}," macro",{"type":45,"tag":105,"props":806,"children":807},{},[808],{"type":50,"value":809},"Write custom main function",{"type":45,"tag":78,"props":811,"children":812},{},[813,826],{"type":45,"tag":105,"props":814,"children":815},{},[816,818,824],{"type":50,"value":817},"Handle ",{"type":45,"tag":203,"props":819,"children":821},{"className":820},[],[822],{"type":50,"value":823},"Result::Err",{"type":50,"value":825}," gracefully",{"type":45,"tag":105,"props":827,"children":828},{},[829],{"type":50,"value":830},"Panic on expected errors",{"type":45,"tag":78,"props":832,"children":833},{},[834,839],{"type":45,"tag":105,"props":835,"children":836},{},[837],{"type":50,"value":838},"Keep harness deterministic",{"type":45,"tag":105,"props":840,"children":841},{},[842],{"type":50,"value":843},"Use random number generators",{"type":45,"tag":845,"props":846,"children":847},"blockquote",{},[848],{"type":45,"tag":52,"props":849,"children":850},{},[851,856,858,864,866,871],{"type":45,"tag":159,"props":852,"children":853},{},[854],{"type":50,"value":855},"See Also:",{"type":50,"value":857}," For detailed harness writing techniques and structure-aware fuzzing with the\n",{"type":45,"tag":203,"props":859,"children":861},{"className":860},[],[862],{"type":50,"value":863},"arbitrary",{"type":50,"value":865}," crate, see the ",{"type":45,"tag":159,"props":867,"children":868},{},[869],{"type":50,"value":870},"fuzz-harness-writing",{"type":50,"value":872}," technique skill.",{"type":45,"tag":58,"props":874,"children":876},{"id":875},"structure-aware-fuzzing",[877],{"type":50,"value":878},"Structure-Aware Fuzzing",{"type":45,"tag":52,"props":880,"children":881},{},[882,884,890],{"type":50,"value":883},"cargo-fuzz integrates with the ",{"type":45,"tag":402,"props":885,"children":888},{"href":886,"rel":887},"https:\u002F\u002Fgithub.com\u002Frust-fuzz\u002Farbitrary",[406],[889],{"type":50,"value":863},{"type":50,"value":891}," crate for structure-aware fuzzing:",{"type":45,"tag":196,"props":893,"children":895},{"className":198,"code":894,"language":22,"meta":200,"style":200},"\u002F\u002F In your library crate\nuse arbitrary::Arbitrary;\n\n#[derive(Debug, Arbitrary)]\npub struct Name {\n    data: String\n}\n",[896],{"type":45,"tag":203,"props":897,"children":898},{"__ignoreMap":200},[899,907,915,922,930,938,946],{"type":45,"tag":207,"props":900,"children":901},{"class":209,"line":210},[902],{"type":45,"tag":207,"props":903,"children":904},{},[905],{"type":50,"value":906},"\u002F\u002F In your library crate\n",{"type":45,"tag":207,"props":908,"children":909},{"class":209,"line":219},[910],{"type":45,"tag":207,"props":911,"children":912},{},[913],{"type":50,"value":914},"use arbitrary::Arbitrary;\n",{"type":45,"tag":207,"props":916,"children":917},{"class":209,"line":229},[918],{"type":45,"tag":207,"props":919,"children":920},{"emptyLinePlaceholder":223},[921],{"type":50,"value":226},{"type":45,"tag":207,"props":923,"children":924},{"class":209,"line":238},[925],{"type":45,"tag":207,"props":926,"children":927},{},[928],{"type":50,"value":929},"#[derive(Debug, Arbitrary)]\n",{"type":45,"tag":207,"props":931,"children":932},{"class":209,"line":246},[933],{"type":45,"tag":207,"props":934,"children":935},{},[936],{"type":50,"value":937},"pub struct Name {\n",{"type":45,"tag":207,"props":939,"children":940},{"class":209,"line":255},[941],{"type":45,"tag":207,"props":942,"children":943},{},[944],{"type":50,"value":945},"    data: String\n",{"type":45,"tag":207,"props":947,"children":948},{"class":209,"line":264},[949],{"type":45,"tag":207,"props":950,"children":951},{},[952],{"type":50,"value":270},{"type":45,"tag":196,"props":954,"children":956},{"className":198,"code":955,"language":22,"meta":200,"style":200},"\u002F\u002F In your fuzz target\n#![no_main]\nuse libfuzzer_sys::fuzz_target;\n\nfuzz_target!(|data: your_project::Name| {\n    data.check_buf();\n});\n",[957],{"type":45,"tag":203,"props":958,"children":959},{"__ignoreMap":200},[960,968,975,982,989,997,1005],{"type":45,"tag":207,"props":961,"children":962},{"class":209,"line":210},[963],{"type":45,"tag":207,"props":964,"children":965},{},[966],{"type":50,"value":967},"\u002F\u002F In your fuzz target\n",{"type":45,"tag":207,"props":969,"children":970},{"class":209,"line":219},[971],{"type":45,"tag":207,"props":972,"children":973},{},[974],{"type":50,"value":216},{"type":45,"tag":207,"props":976,"children":977},{"class":209,"line":229},[978],{"type":45,"tag":207,"props":979,"children":980},{},[981],{"type":50,"value":235},{"type":45,"tag":207,"props":983,"children":984},{"class":209,"line":238},[985],{"type":45,"tag":207,"props":986,"children":987},{"emptyLinePlaceholder":223},[988],{"type":50,"value":226},{"type":45,"tag":207,"props":990,"children":991},{"class":209,"line":246},[992],{"type":45,"tag":207,"props":993,"children":994},{},[995],{"type":50,"value":996},"fuzz_target!(|data: your_project::Name| {\n",{"type":45,"tag":207,"props":998,"children":999},{"class":209,"line":255},[1000],{"type":45,"tag":207,"props":1001,"children":1002},{},[1003],{"type":50,"value":1004},"    data.check_buf();\n",{"type":45,"tag":207,"props":1006,"children":1007},{"class":209,"line":264},[1008],{"type":45,"tag":207,"props":1009,"children":1010},{},[1011],{"type":50,"value":305},{"type":45,"tag":52,"props":1013,"children":1014},{},[1015,1017,1023],{"type":50,"value":1016},"Add to your library's ",{"type":45,"tag":203,"props":1018,"children":1020},{"className":1019},[],[1021],{"type":50,"value":1022},"Cargo.toml",{"type":50,"value":1024},":",{"type":45,"tag":196,"props":1026,"children":1030},{"className":1027,"code":1028,"language":1029,"meta":200,"style":200},"language-toml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","[dependencies]\narbitrary = { version = \"1\", features = [\"derive\"] }\n","toml",[1031],{"type":45,"tag":203,"props":1032,"children":1033},{"__ignoreMap":200},[1034,1042],{"type":45,"tag":207,"props":1035,"children":1036},{"class":209,"line":210},[1037],{"type":45,"tag":207,"props":1038,"children":1039},{},[1040],{"type":50,"value":1041},"[dependencies]\n",{"type":45,"tag":207,"props":1043,"children":1044},{"class":209,"line":219},[1045],{"type":45,"tag":207,"props":1046,"children":1047},{},[1048],{"type":50,"value":1049},"arbitrary = { version = \"1\", features = [\"derive\"] }\n",{"type":45,"tag":58,"props":1051,"children":1053},{"id":1052},"running-campaigns",[1054],{"type":50,"value":1055},"Running Campaigns",{"type":45,"tag":387,"props":1057,"children":1059},{"id":1058},"basic-run",[1060],{"type":50,"value":1061},"Basic Run",{"type":45,"tag":196,"props":1063,"children":1065},{"className":313,"code":1064,"language":315,"meta":200,"style":200},"cargo +nightly fuzz run fuzz_target_1\n",[1066],{"type":45,"tag":203,"props":1067,"children":1068},{"__ignoreMap":200},[1069],{"type":45,"tag":207,"props":1070,"children":1071},{"class":209,"line":210},[1072,1076,1080,1084,1088],{"type":45,"tag":207,"props":1073,"children":1074},{"style":325},[1075],{"type":50,"value":328},{"type":45,"tag":207,"props":1077,"children":1078},{"style":331},[1079],{"type":50,"value":360},{"type":45,"tag":207,"props":1081,"children":1082},{"style":331},[1083],{"type":50,"value":334},{"type":45,"tag":207,"props":1085,"children":1086},{"style":331},[1087],{"type":50,"value":369},{"type":45,"tag":207,"props":1089,"children":1090},{"style":331},[1091],{"type":50,"value":374},{"type":45,"tag":387,"props":1093,"children":1095},{"id":1094},"without-sanitizers-safe-rust",[1096],{"type":50,"value":1097},"Without Sanitizers (Safe Rust)",{"type":45,"tag":52,"props":1099,"children":1100},{},[1101],{"type":50,"value":1102},"If your project doesn't use unsafe Rust, disable sanitizers for 2x performance boost:",{"type":45,"tag":196,"props":1104,"children":1106},{"className":313,"code":1105,"language":315,"meta":200,"style":200},"cargo +nightly fuzz run --sanitizer none fuzz_target_1\n",[1107],{"type":45,"tag":203,"props":1108,"children":1109},{"__ignoreMap":200},[1110],{"type":45,"tag":207,"props":1111,"children":1112},{"class":209,"line":210},[1113,1117,1121,1125,1129,1134,1139],{"type":45,"tag":207,"props":1114,"children":1115},{"style":325},[1116],{"type":50,"value":328},{"type":45,"tag":207,"props":1118,"children":1119},{"style":331},[1120],{"type":50,"value":360},{"type":45,"tag":207,"props":1122,"children":1123},{"style":331},[1124],{"type":50,"value":334},{"type":45,"tag":207,"props":1126,"children":1127},{"style":331},[1128],{"type":50,"value":369},{"type":45,"tag":207,"props":1130,"children":1131},{"style":331},[1132],{"type":50,"value":1133}," --sanitizer",{"type":45,"tag":207,"props":1135,"children":1136},{"style":331},[1137],{"type":50,"value":1138}," none",{"type":45,"tag":207,"props":1140,"children":1141},{"style":331},[1142],{"type":50,"value":374},{"type":45,"tag":52,"props":1144,"children":1145},{},[1146],{"type":50,"value":1147},"Check if your project uses unsafe code:",{"type":45,"tag":196,"props":1149,"children":1151},{"className":313,"code":1150,"language":315,"meta":200,"style":200},"cargo install cargo-geiger\ncargo geiger\n",[1152],{"type":45,"tag":203,"props":1153,"children":1154},{"__ignoreMap":200},[1155,1171],{"type":45,"tag":207,"props":1156,"children":1157},{"class":209,"line":210},[1158,1162,1166],{"type":45,"tag":207,"props":1159,"children":1160},{"style":325},[1161],{"type":50,"value":328},{"type":45,"tag":207,"props":1163,"children":1164},{"style":331},[1165],{"type":50,"value":447},{"type":45,"tag":207,"props":1167,"children":1168},{"style":331},[1169],{"type":50,"value":1170}," cargo-geiger\n",{"type":45,"tag":207,"props":1172,"children":1173},{"class":209,"line":219},[1174,1178],{"type":45,"tag":207,"props":1175,"children":1176},{"style":325},[1177],{"type":50,"value":328},{"type":45,"tag":207,"props":1179,"children":1180},{"style":331},[1181],{"type":50,"value":1182}," geiger\n",{"type":45,"tag":387,"props":1184,"children":1186},{"id":1185},"re-executing-test-cases",[1187],{"type":50,"value":1188},"Re-executing Test Cases",{"type":45,"tag":196,"props":1190,"children":1192},{"className":313,"code":1191,"language":315,"meta":200,"style":200},"# Run a specific test case (e.g., a crash)\ncargo +nightly fuzz run fuzz_target_1 fuzz\u002Fartifacts\u002Ffuzz_target_1\u002Fcrash-\u003Chash>\n\n# Run all corpus entries without fuzzing\ncargo +nightly fuzz run fuzz_target_1 fuzz\u002Fcorpus\u002Ffuzz_target_1 -- -runs=0\n",[1193],{"type":45,"tag":203,"props":1194,"children":1195},{"__ignoreMap":200},[1196,1204,1255,1262,1270],{"type":45,"tag":207,"props":1197,"children":1198},{"class":209,"line":210},[1199],{"type":45,"tag":207,"props":1200,"children":1201},{"style":345},[1202],{"type":50,"value":1203},"# Run a specific test case (e.g., a crash)\n",{"type":45,"tag":207,"props":1205,"children":1206},{"class":209,"line":219},[1207,1211,1215,1219,1223,1228,1233,1239,1244,1250],{"type":45,"tag":207,"props":1208,"children":1209},{"style":325},[1210],{"type":50,"value":328},{"type":45,"tag":207,"props":1212,"children":1213},{"style":331},[1214],{"type":50,"value":360},{"type":45,"tag":207,"props":1216,"children":1217},{"style":331},[1218],{"type":50,"value":334},{"type":45,"tag":207,"props":1220,"children":1221},{"style":331},[1222],{"type":50,"value":369},{"type":45,"tag":207,"props":1224,"children":1225},{"style":331},[1226],{"type":50,"value":1227}," fuzz_target_1",{"type":45,"tag":207,"props":1229,"children":1230},{"style":331},[1231],{"type":50,"value":1232}," fuzz\u002Fartifacts\u002Ffuzz_target_1\u002Fcrash-",{"type":45,"tag":207,"props":1234,"children":1236},{"style":1235},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[1237],{"type":50,"value":1238},"\u003C",{"type":45,"tag":207,"props":1240,"children":1241},{"style":331},[1242],{"type":50,"value":1243},"has",{"type":45,"tag":207,"props":1245,"children":1247},{"style":1246},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[1248],{"type":50,"value":1249},"h",{"type":45,"tag":207,"props":1251,"children":1252},{"style":1235},[1253],{"type":50,"value":1254},">\n",{"type":45,"tag":207,"props":1256,"children":1257},{"class":209,"line":229},[1258],{"type":45,"tag":207,"props":1259,"children":1260},{"emptyLinePlaceholder":223},[1261],{"type":50,"value":226},{"type":45,"tag":207,"props":1263,"children":1264},{"class":209,"line":238},[1265],{"type":45,"tag":207,"props":1266,"children":1267},{"style":345},[1268],{"type":50,"value":1269},"# Run all corpus entries without fuzzing\n",{"type":45,"tag":207,"props":1271,"children":1272},{"class":209,"line":246},[1273,1277,1281,1285,1289,1293,1298,1303],{"type":45,"tag":207,"props":1274,"children":1275},{"style":325},[1276],{"type":50,"value":328},{"type":45,"tag":207,"props":1278,"children":1279},{"style":331},[1280],{"type":50,"value":360},{"type":45,"tag":207,"props":1282,"children":1283},{"style":331},[1284],{"type":50,"value":334},{"type":45,"tag":207,"props":1286,"children":1287},{"style":331},[1288],{"type":50,"value":369},{"type":45,"tag":207,"props":1290,"children":1291},{"style":331},[1292],{"type":50,"value":1227},{"type":45,"tag":207,"props":1294,"children":1295},{"style":331},[1296],{"type":50,"value":1297}," fuzz\u002Fcorpus\u002Ffuzz_target_1",{"type":45,"tag":207,"props":1299,"children":1300},{"style":331},[1301],{"type":50,"value":1302}," --",{"type":45,"tag":207,"props":1304,"children":1305},{"style":331},[1306],{"type":50,"value":1307}," -runs=0\n",{"type":45,"tag":387,"props":1309,"children":1311},{"id":1310},"using-dictionaries",[1312],{"type":50,"value":1313},"Using Dictionaries",{"type":45,"tag":196,"props":1315,"children":1317},{"className":313,"code":1316,"language":315,"meta":200,"style":200},"cargo +nightly fuzz run fuzz_target_1 -- -dict=.\u002Fdict.dict\n",[1318],{"type":45,"tag":203,"props":1319,"children":1320},{"__ignoreMap":200},[1321],{"type":45,"tag":207,"props":1322,"children":1323},{"class":209,"line":210},[1324,1328,1332,1336,1340,1344,1348],{"type":45,"tag":207,"props":1325,"children":1326},{"style":325},[1327],{"type":50,"value":328},{"type":45,"tag":207,"props":1329,"children":1330},{"style":331},[1331],{"type":50,"value":360},{"type":45,"tag":207,"props":1333,"children":1334},{"style":331},[1335],{"type":50,"value":334},{"type":45,"tag":207,"props":1337,"children":1338},{"style":331},[1339],{"type":50,"value":369},{"type":45,"tag":207,"props":1341,"children":1342},{"style":331},[1343],{"type":50,"value":1227},{"type":45,"tag":207,"props":1345,"children":1346},{"style":331},[1347],{"type":50,"value":1302},{"type":45,"tag":207,"props":1349,"children":1350},{"style":331},[1351],{"type":50,"value":1352}," -dict=.\u002Fdict.dict\n",{"type":45,"tag":387,"props":1354,"children":1356},{"id":1355},"interpreting-output",[1357],{"type":50,"value":1358},"Interpreting Output",{"type":45,"tag":70,"props":1360,"children":1361},{},[1362,1378],{"type":45,"tag":74,"props":1363,"children":1364},{},[1365],{"type":45,"tag":78,"props":1366,"children":1367},{},[1368,1373],{"type":45,"tag":82,"props":1369,"children":1370},{},[1371],{"type":50,"value":1372},"Output",{"type":45,"tag":82,"props":1374,"children":1375},{},[1376],{"type":50,"value":1377},"Meaning",{"type":45,"tag":98,"props":1379,"children":1380},{},[1381,1398,1415,1432],{"type":45,"tag":78,"props":1382,"children":1383},{},[1384,1393],{"type":45,"tag":105,"props":1385,"children":1386},{},[1387],{"type":45,"tag":203,"props":1388,"children":1390},{"className":1389},[],[1391],{"type":50,"value":1392},"NEW",{"type":45,"tag":105,"props":1394,"children":1395},{},[1396],{"type":50,"value":1397},"New coverage-increasing input discovered",{"type":45,"tag":78,"props":1399,"children":1400},{},[1401,1410],{"type":45,"tag":105,"props":1402,"children":1403},{},[1404],{"type":45,"tag":203,"props":1405,"children":1407},{"className":1406},[],[1408],{"type":50,"value":1409},"pulse",{"type":45,"tag":105,"props":1411,"children":1412},{},[1413],{"type":50,"value":1414},"Periodic status update",{"type":45,"tag":78,"props":1416,"children":1417},{},[1418,1427],{"type":45,"tag":105,"props":1419,"children":1420},{},[1421],{"type":45,"tag":203,"props":1422,"children":1424},{"className":1423},[],[1425],{"type":50,"value":1426},"INITED",{"type":45,"tag":105,"props":1428,"children":1429},{},[1430],{"type":50,"value":1431},"Fuzzer initialized successfully",{"type":45,"tag":78,"props":1433,"children":1434},{},[1435,1440],{"type":45,"tag":105,"props":1436,"children":1437},{},[1438],{"type":50,"value":1439},"Crash with stack trace",{"type":45,"tag":105,"props":1441,"children":1442},{},[1443,1445],{"type":50,"value":1444},"Bug found, saved to ",{"type":45,"tag":203,"props":1446,"children":1448},{"className":1447},[],[1449],{"type":50,"value":1450},"fuzz\u002Fartifacts\u002F",{"type":45,"tag":52,"props":1452,"children":1453},{},[1454,1456,1462,1464],{"type":50,"value":1455},"Corpus location: ",{"type":45,"tag":203,"props":1457,"children":1459},{"className":1458},[],[1460],{"type":50,"value":1461},"fuzz\u002Fcorpus\u002Ffuzz_target_1\u002F",{"type":50,"value":1463},"\nCrashes location: ",{"type":45,"tag":203,"props":1465,"children":1467},{"className":1466},[],[1468],{"type":50,"value":1469},"fuzz\u002Fartifacts\u002Ffuzz_target_1\u002F",{"type":45,"tag":58,"props":1471,"children":1473},{"id":1472},"sanitizer-integration",[1474],{"type":50,"value":1475},"Sanitizer Integration",{"type":45,"tag":387,"props":1477,"children":1479},{"id":1478},"addresssanitizer-asan",[1480],{"type":50,"value":1481},"AddressSanitizer (ASan)",{"type":45,"tag":52,"props":1483,"children":1484},{},[1485],{"type":50,"value":1486},"ASan is enabled by default and detects memory errors:",{"type":45,"tag":196,"props":1488,"children":1489},{"className":313,"code":1064,"language":315,"meta":200,"style":200},[1490],{"type":45,"tag":203,"props":1491,"children":1492},{"__ignoreMap":200},[1493],{"type":45,"tag":207,"props":1494,"children":1495},{"class":209,"line":210},[1496,1500,1504,1508,1512],{"type":45,"tag":207,"props":1497,"children":1498},{"style":325},[1499],{"type":50,"value":328},{"type":45,"tag":207,"props":1501,"children":1502},{"style":331},[1503],{"type":50,"value":360},{"type":45,"tag":207,"props":1505,"children":1506},{"style":331},[1507],{"type":50,"value":334},{"type":45,"tag":207,"props":1509,"children":1510},{"style":331},[1511],{"type":50,"value":369},{"type":45,"tag":207,"props":1513,"children":1514},{"style":331},[1515],{"type":50,"value":374},{"type":45,"tag":387,"props":1517,"children":1519},{"id":1518},"disabling-sanitizers",[1520],{"type":50,"value":1521},"Disabling Sanitizers",{"type":45,"tag":52,"props":1523,"children":1524},{},[1525],{"type":50,"value":1526},"For pure safe Rust (no unsafe blocks in your code or dependencies):",{"type":45,"tag":196,"props":1528,"children":1529},{"className":313,"code":1105,"language":315,"meta":200,"style":200},[1530],{"type":45,"tag":203,"props":1531,"children":1532},{"__ignoreMap":200},[1533],{"type":45,"tag":207,"props":1534,"children":1535},{"class":209,"line":210},[1536,1540,1544,1548,1552,1556,1560],{"type":45,"tag":207,"props":1537,"children":1538},{"style":325},[1539],{"type":50,"value":328},{"type":45,"tag":207,"props":1541,"children":1542},{"style":331},[1543],{"type":50,"value":360},{"type":45,"tag":207,"props":1545,"children":1546},{"style":331},[1547],{"type":50,"value":334},{"type":45,"tag":207,"props":1549,"children":1550},{"style":331},[1551],{"type":50,"value":369},{"type":45,"tag":207,"props":1553,"children":1554},{"style":331},[1555],{"type":50,"value":1133},{"type":45,"tag":207,"props":1557,"children":1558},{"style":331},[1559],{"type":50,"value":1138},{"type":45,"tag":207,"props":1561,"children":1562},{"style":331},[1563],{"type":50,"value":374},{"type":45,"tag":52,"props":1565,"children":1566},{},[1567,1572],{"type":45,"tag":159,"props":1568,"children":1569},{},[1570],{"type":50,"value":1571},"Performance impact:",{"type":50,"value":1573}," ASan adds ~2x overhead. Disable for safe Rust to improve fuzzing speed.",{"type":45,"tag":387,"props":1575,"children":1577},{"id":1576},"checking-for-unsafe-code",[1578],{"type":50,"value":1579},"Checking for Unsafe Code",{"type":45,"tag":196,"props":1581,"children":1582},{"className":313,"code":1150,"language":315,"meta":200,"style":200},[1583],{"type":45,"tag":203,"props":1584,"children":1585},{"__ignoreMap":200},[1586,1601],{"type":45,"tag":207,"props":1587,"children":1588},{"class":209,"line":210},[1589,1593,1597],{"type":45,"tag":207,"props":1590,"children":1591},{"style":325},[1592],{"type":50,"value":328},{"type":45,"tag":207,"props":1594,"children":1595},{"style":331},[1596],{"type":50,"value":447},{"type":45,"tag":207,"props":1598,"children":1599},{"style":331},[1600],{"type":50,"value":1170},{"type":45,"tag":207,"props":1602,"children":1603},{"class":209,"line":219},[1604,1608],{"type":45,"tag":207,"props":1605,"children":1606},{"style":325},[1607],{"type":50,"value":328},{"type":45,"tag":207,"props":1609,"children":1610},{"style":331},[1611],{"type":50,"value":1182},{"type":45,"tag":845,"props":1613,"children":1614},{},[1615],{"type":45,"tag":52,"props":1616,"children":1617},{},[1618,1622,1624,1629],{"type":45,"tag":159,"props":1619,"children":1620},{},[1621],{"type":50,"value":855},{"type":50,"value":1623}," For detailed sanitizer configuration, flags, and troubleshooting,\nsee the ",{"type":45,"tag":159,"props":1625,"children":1626},{},[1627],{"type":50,"value":1628},"address-sanitizer",{"type":50,"value":872},{"type":45,"tag":58,"props":1631,"children":1633},{"id":1632},"coverage-analysis",[1634],{"type":50,"value":1635},"Coverage Analysis",{"type":45,"tag":52,"props":1637,"children":1638},{},[1639],{"type":50,"value":1640},"cargo-fuzz integrates with Rust's coverage tools to analyze fuzzing effectiveness.",{"type":45,"tag":387,"props":1642,"children":1644},{"id":1643},"prerequisites-1",[1645],{"type":50,"value":392},{"type":45,"tag":196,"props":1647,"children":1649},{"className":313,"code":1648,"language":315,"meta":200,"style":200},"rustup toolchain install nightly --component llvm-tools-preview\ncargo install cargo-binutils\ncargo install rustfilt\n",[1650],{"type":45,"tag":203,"props":1651,"children":1652},{"__ignoreMap":200},[1653,1684,1700],{"type":45,"tag":207,"props":1654,"children":1655},{"class":209,"line":210},[1656,1660,1665,1669,1674,1679],{"type":45,"tag":207,"props":1657,"children":1658},{"style":325},[1659],{"type":50,"value":409},{"type":45,"tag":207,"props":1661,"children":1662},{"style":331},[1663],{"type":50,"value":1664}," toolchain",{"type":45,"tag":207,"props":1666,"children":1667},{"style":331},[1668],{"type":50,"value":447},{"type":45,"tag":207,"props":1670,"children":1671},{"style":331},[1672],{"type":50,"value":1673}," nightly",{"type":45,"tag":207,"props":1675,"children":1676},{"style":331},[1677],{"type":50,"value":1678}," --component",{"type":45,"tag":207,"props":1680,"children":1681},{"style":331},[1682],{"type":50,"value":1683}," llvm-tools-preview\n",{"type":45,"tag":207,"props":1685,"children":1686},{"class":209,"line":219},[1687,1691,1695],{"type":45,"tag":207,"props":1688,"children":1689},{"style":325},[1690],{"type":50,"value":328},{"type":45,"tag":207,"props":1692,"children":1693},{"style":331},[1694],{"type":50,"value":447},{"type":45,"tag":207,"props":1696,"children":1697},{"style":331},[1698],{"type":50,"value":1699}," cargo-binutils\n",{"type":45,"tag":207,"props":1701,"children":1702},{"class":209,"line":229},[1703,1707,1711],{"type":45,"tag":207,"props":1704,"children":1705},{"style":325},[1706],{"type":50,"value":328},{"type":45,"tag":207,"props":1708,"children":1709},{"style":331},[1710],{"type":50,"value":447},{"type":45,"tag":207,"props":1712,"children":1713},{"style":331},[1714],{"type":50,"value":1715}," rustfilt\n",{"type":45,"tag":387,"props":1717,"children":1719},{"id":1718},"generating-coverage-reports",[1720],{"type":50,"value":1721},"Generating Coverage Reports",{"type":45,"tag":196,"props":1723,"children":1725},{"className":313,"code":1724,"language":315,"meta":200,"style":200},"# Generate coverage data from corpus\ncargo +nightly fuzz coverage fuzz_target_1\n",[1726],{"type":45,"tag":203,"props":1727,"children":1728},{"__ignoreMap":200},[1729,1737],{"type":45,"tag":207,"props":1730,"children":1731},{"class":209,"line":210},[1732],{"type":45,"tag":207,"props":1733,"children":1734},{"style":345},[1735],{"type":50,"value":1736},"# Generate coverage data from corpus\n",{"type":45,"tag":207,"props":1738,"children":1739},{"class":209,"line":219},[1740,1744,1748,1752,1757],{"type":45,"tag":207,"props":1741,"children":1742},{"style":325},[1743],{"type":50,"value":328},{"type":45,"tag":207,"props":1745,"children":1746},{"style":331},[1747],{"type":50,"value":360},{"type":45,"tag":207,"props":1749,"children":1750},{"style":331},[1751],{"type":50,"value":334},{"type":45,"tag":207,"props":1753,"children":1754},{"style":331},[1755],{"type":50,"value":1756}," coverage",{"type":45,"tag":207,"props":1758,"children":1759},{"style":331},[1760],{"type":50,"value":374},{"type":45,"tag":52,"props":1762,"children":1763},{},[1764],{"type":50,"value":1765},"Create coverage generation script:",{"type":45,"tag":196,"props":1767,"children":1769},{"className":313,"code":1768,"language":315,"meta":200,"style":200},"cat \u003C\u003C'EOF' > .\u002Fgenerate_html\n#!\u002Fbin\u002Fsh\nif [ $# -lt 1 ]; then\n    echo \"Error: Name of fuzz target is required.\"\n    echo \"Usage: $0 fuzz_target [sources...]\"\n    exit 1\nfi\nFUZZ_TARGET=\"$1\"\nshift\nSRC_FILTER=\"$@\"\nTARGET=$(rustc -vV | sed -n 's|host: ||p')\ncargo +nightly cov -- show -Xdemangler=rustfilt \\\n  \"target\u002F$TARGET\u002Fcoverage\u002F$TARGET\u002Frelease\u002F$FUZZ_TARGET\" \\\n  -instr-profile=\"fuzz\u002Fcoverage\u002F$FUZZ_TARGET\u002Fcoverage.profdata\"  \\\n  -show-line-counts-or-regions -show-instantiations  \\\n  -format=html -o fuzz_html\u002F $SRC_FILTER\nEOF\nchmod +x .\u002Fgenerate_html\n",[1770],{"type":45,"tag":203,"props":1771,"children":1772},{"__ignoreMap":200},[1773,1801,1809,1817,1825,1833,1841,1849,1857,1865,1873,1881,1889,1897,1905,1913,1921,1929],{"type":45,"tag":207,"props":1774,"children":1775},{"class":209,"line":210},[1776,1781,1786,1791,1796],{"type":45,"tag":207,"props":1777,"children":1778},{"style":325},[1779],{"type":50,"value":1780},"cat",{"type":45,"tag":207,"props":1782,"children":1783},{"style":1235},[1784],{"type":50,"value":1785}," \u003C\u003C",{"type":45,"tag":207,"props":1787,"children":1788},{"style":1235},[1789],{"type":50,"value":1790},"'EOF'",{"type":45,"tag":207,"props":1792,"children":1793},{"style":1235},[1794],{"type":50,"value":1795}," >",{"type":45,"tag":207,"props":1797,"children":1798},{"style":331},[1799],{"type":50,"value":1800}," .\u002Fgenerate_html\n",{"type":45,"tag":207,"props":1802,"children":1803},{"class":209,"line":219},[1804],{"type":45,"tag":207,"props":1805,"children":1806},{"style":331},[1807],{"type":50,"value":1808},"#!\u002Fbin\u002Fsh\n",{"type":45,"tag":207,"props":1810,"children":1811},{"class":209,"line":229},[1812],{"type":45,"tag":207,"props":1813,"children":1814},{"style":331},[1815],{"type":50,"value":1816},"if [ $# -lt 1 ]; then\n",{"type":45,"tag":207,"props":1818,"children":1819},{"class":209,"line":238},[1820],{"type":45,"tag":207,"props":1821,"children":1822},{"style":331},[1823],{"type":50,"value":1824},"    echo \"Error: Name of fuzz target is required.\"\n",{"type":45,"tag":207,"props":1826,"children":1827},{"class":209,"line":246},[1828],{"type":45,"tag":207,"props":1829,"children":1830},{"style":331},[1831],{"type":50,"value":1832},"    echo \"Usage: $0 fuzz_target [sources...]\"\n",{"type":45,"tag":207,"props":1834,"children":1835},{"class":209,"line":255},[1836],{"type":45,"tag":207,"props":1837,"children":1838},{"style":331},[1839],{"type":50,"value":1840},"    exit 1\n",{"type":45,"tag":207,"props":1842,"children":1843},{"class":209,"line":264},[1844],{"type":45,"tag":207,"props":1845,"children":1846},{"style":331},[1847],{"type":50,"value":1848},"fi\n",{"type":45,"tag":207,"props":1850,"children":1851},{"class":209,"line":273},[1852],{"type":45,"tag":207,"props":1853,"children":1854},{"style":331},[1855],{"type":50,"value":1856},"FUZZ_TARGET=\"$1\"\n",{"type":45,"tag":207,"props":1858,"children":1859},{"class":209,"line":281},[1860],{"type":45,"tag":207,"props":1861,"children":1862},{"style":331},[1863],{"type":50,"value":1864},"shift\n",{"type":45,"tag":207,"props":1866,"children":1867},{"class":209,"line":290},[1868],{"type":45,"tag":207,"props":1869,"children":1870},{"style":331},[1871],{"type":50,"value":1872},"SRC_FILTER=\"$@\"\n",{"type":45,"tag":207,"props":1874,"children":1875},{"class":209,"line":299},[1876],{"type":45,"tag":207,"props":1877,"children":1878},{"style":331},[1879],{"type":50,"value":1880},"TARGET=$(rustc -vV | sed -n 's|host: ||p')\n",{"type":45,"tag":207,"props":1882,"children":1883},{"class":209,"line":701},[1884],{"type":45,"tag":207,"props":1885,"children":1886},{"style":331},[1887],{"type":50,"value":1888},"cargo +nightly cov -- show -Xdemangler=rustfilt \\\n",{"type":45,"tag":207,"props":1890,"children":1891},{"class":209,"line":710},[1892],{"type":45,"tag":207,"props":1893,"children":1894},{"style":331},[1895],{"type":50,"value":1896},"  \"target\u002F$TARGET\u002Fcoverage\u002F$TARGET\u002Frelease\u002F$FUZZ_TARGET\" \\\n",{"type":45,"tag":207,"props":1898,"children":1899},{"class":209,"line":718},[1900],{"type":45,"tag":207,"props":1901,"children":1902},{"style":331},[1903],{"type":50,"value":1904},"  -instr-profile=\"fuzz\u002Fcoverage\u002F$FUZZ_TARGET\u002Fcoverage.profdata\"  \\\n",{"type":45,"tag":207,"props":1906,"children":1907},{"class":209,"line":726},[1908],{"type":45,"tag":207,"props":1909,"children":1910},{"style":331},[1911],{"type":50,"value":1912},"  -show-line-counts-or-regions -show-instantiations  \\\n",{"type":45,"tag":207,"props":1914,"children":1915},{"class":209,"line":734},[1916],{"type":45,"tag":207,"props":1917,"children":1918},{"style":331},[1919],{"type":50,"value":1920},"  -format=html -o fuzz_html\u002F $SRC_FILTER\n",{"type":45,"tag":207,"props":1922,"children":1923},{"class":209,"line":742},[1924],{"type":45,"tag":207,"props":1925,"children":1926},{"style":1235},[1927],{"type":50,"value":1928},"EOF\n",{"type":45,"tag":207,"props":1930,"children":1932},{"class":209,"line":1931},18,[1933,1938,1943],{"type":45,"tag":207,"props":1934,"children":1935},{"style":325},[1936],{"type":50,"value":1937},"chmod",{"type":45,"tag":207,"props":1939,"children":1940},{"style":331},[1941],{"type":50,"value":1942}," +x",{"type":45,"tag":207,"props":1944,"children":1945},{"style":331},[1946],{"type":50,"value":1800},{"type":45,"tag":52,"props":1948,"children":1949},{},[1950],{"type":50,"value":1951},"Generate HTML report:",{"type":45,"tag":196,"props":1953,"children":1955},{"className":313,"code":1954,"language":315,"meta":200,"style":200},".\u002Fgenerate_html fuzz_target_1 src\u002Flib.rs\n",[1956],{"type":45,"tag":203,"props":1957,"children":1958},{"__ignoreMap":200},[1959],{"type":45,"tag":207,"props":1960,"children":1961},{"class":209,"line":210},[1962,1967,1971],{"type":45,"tag":207,"props":1963,"children":1964},{"style":325},[1965],{"type":50,"value":1966},".\u002Fgenerate_html",{"type":45,"tag":207,"props":1968,"children":1969},{"style":331},[1970],{"type":50,"value":1227},{"type":45,"tag":207,"props":1972,"children":1973},{"style":331},[1974],{"type":50,"value":1975}," src\u002Flib.rs\n",{"type":45,"tag":52,"props":1977,"children":1978},{},[1979,1981],{"type":50,"value":1980},"HTML report saved to: ",{"type":45,"tag":203,"props":1982,"children":1984},{"className":1983},[],[1985],{"type":50,"value":1986},"fuzz_html\u002F",{"type":45,"tag":845,"props":1988,"children":1989},{},[1990],{"type":45,"tag":52,"props":1991,"children":1992},{},[1993,1997,1999,2003],{"type":45,"tag":159,"props":1994,"children":1995},{},[1996],{"type":50,"value":855},{"type":50,"value":1998}," For detailed coverage analysis techniques and systematic coverage improvement,\nsee the ",{"type":45,"tag":159,"props":2000,"children":2001},{},[2002],{"type":50,"value":1632},{"type":50,"value":872},{"type":45,"tag":58,"props":2005,"children":2007},{"id":2006},"advanced-usage",[2008],{"type":50,"value":2009},"Advanced Usage",{"type":45,"tag":387,"props":2011,"children":2013},{"id":2012},"tips-and-tricks",[2014],{"type":50,"value":2015},"Tips and Tricks",{"type":45,"tag":70,"props":2017,"children":2018},{},[2019,2035],{"type":45,"tag":74,"props":2020,"children":2021},{},[2022],{"type":45,"tag":78,"props":2023,"children":2024},{},[2025,2030],{"type":45,"tag":82,"props":2026,"children":2027},{},[2028],{"type":50,"value":2029},"Tip",{"type":45,"tag":82,"props":2031,"children":2032},{},[2033],{"type":50,"value":2034},"Why It Helps",{"type":45,"tag":98,"props":2036,"children":2037},{},[2038,2051,2071,2084,2097],{"type":45,"tag":78,"props":2039,"children":2040},{},[2041,2046],{"type":45,"tag":105,"props":2042,"children":2043},{},[2044],{"type":50,"value":2045},"Start with a seed corpus",{"type":45,"tag":105,"props":2047,"children":2048},{},[2049],{"type":50,"value":2050},"Dramatically speeds up initial coverage discovery",{"type":45,"tag":78,"props":2052,"children":2053},{},[2054,2066],{"type":45,"tag":105,"props":2055,"children":2056},{},[2057,2058,2064],{"type":50,"value":796},{"type":45,"tag":203,"props":2059,"children":2061},{"className":2060},[],[2062],{"type":50,"value":2063},"--sanitizer none",{"type":50,"value":2065}," for safe Rust",{"type":45,"tag":105,"props":2067,"children":2068},{},[2069],{"type":50,"value":2070},"2x performance improvement",{"type":45,"tag":78,"props":2072,"children":2073},{},[2074,2079],{"type":45,"tag":105,"props":2075,"children":2076},{},[2077],{"type":50,"value":2078},"Check coverage regularly",{"type":45,"tag":105,"props":2080,"children":2081},{},[2082],{"type":50,"value":2083},"Identifies gaps in harness or seed corpus",{"type":45,"tag":78,"props":2085,"children":2086},{},[2087,2092],{"type":45,"tag":105,"props":2088,"children":2089},{},[2090],{"type":50,"value":2091},"Use dictionaries for parsers",{"type":45,"tag":105,"props":2093,"children":2094},{},[2095],{"type":50,"value":2096},"Helps overcome magic value checks",{"type":45,"tag":78,"props":2098,"children":2099},{},[2100,2105],{"type":45,"tag":105,"props":2101,"children":2102},{},[2103],{"type":50,"value":2104},"Structure code as library",{"type":45,"tag":105,"props":2106,"children":2107},{},[2108],{"type":50,"value":2109},"Required for cargo-fuzz integration",{"type":45,"tag":387,"props":2111,"children":2113},{"id":2112},"libfuzzer-options",[2114],{"type":50,"value":2115},"libFuzzer Options",{"type":45,"tag":52,"props":2117,"children":2118},{},[2119,2121,2127],{"type":50,"value":2120},"Pass options to libFuzzer after ",{"type":45,"tag":203,"props":2122,"children":2124},{"className":2123},[],[2125],{"type":50,"value":2126},"--",{"type":50,"value":1024},{"type":45,"tag":196,"props":2129,"children":2131},{"className":313,"code":2130,"language":315,"meta":200,"style":200},"# See all options\ncargo +nightly fuzz run fuzz_target_1 -- -help=1\n\n# Set timeout per run\ncargo +nightly fuzz run fuzz_target_1 -- -timeout=10\n\n# Use dictionary\ncargo +nightly fuzz run fuzz_target_1 -- -dict=dict.dict\n\n# Limit maximum input size\ncargo +nightly fuzz run fuzz_target_1 -- -max_len=1024\n",[2132],{"type":45,"tag":203,"props":2133,"children":2134},{"__ignoreMap":200},[2135,2143,2175,2182,2190,2222,2229,2237,2269,2276,2284],{"type":45,"tag":207,"props":2136,"children":2137},{"class":209,"line":210},[2138],{"type":45,"tag":207,"props":2139,"children":2140},{"style":345},[2141],{"type":50,"value":2142},"# See all options\n",{"type":45,"tag":207,"props":2144,"children":2145},{"class":209,"line":219},[2146,2150,2154,2158,2162,2166,2170],{"type":45,"tag":207,"props":2147,"children":2148},{"style":325},[2149],{"type":50,"value":328},{"type":45,"tag":207,"props":2151,"children":2152},{"style":331},[2153],{"type":50,"value":360},{"type":45,"tag":207,"props":2155,"children":2156},{"style":331},[2157],{"type":50,"value":334},{"type":45,"tag":207,"props":2159,"children":2160},{"style":331},[2161],{"type":50,"value":369},{"type":45,"tag":207,"props":2163,"children":2164},{"style":331},[2165],{"type":50,"value":1227},{"type":45,"tag":207,"props":2167,"children":2168},{"style":331},[2169],{"type":50,"value":1302},{"type":45,"tag":207,"props":2171,"children":2172},{"style":331},[2173],{"type":50,"value":2174}," -help=1\n",{"type":45,"tag":207,"props":2176,"children":2177},{"class":209,"line":229},[2178],{"type":45,"tag":207,"props":2179,"children":2180},{"emptyLinePlaceholder":223},[2181],{"type":50,"value":226},{"type":45,"tag":207,"props":2183,"children":2184},{"class":209,"line":238},[2185],{"type":45,"tag":207,"props":2186,"children":2187},{"style":345},[2188],{"type":50,"value":2189},"# Set timeout per run\n",{"type":45,"tag":207,"props":2191,"children":2192},{"class":209,"line":246},[2193,2197,2201,2205,2209,2213,2217],{"type":45,"tag":207,"props":2194,"children":2195},{"style":325},[2196],{"type":50,"value":328},{"type":45,"tag":207,"props":2198,"children":2199},{"style":331},[2200],{"type":50,"value":360},{"type":45,"tag":207,"props":2202,"children":2203},{"style":331},[2204],{"type":50,"value":334},{"type":45,"tag":207,"props":2206,"children":2207},{"style":331},[2208],{"type":50,"value":369},{"type":45,"tag":207,"props":2210,"children":2211},{"style":331},[2212],{"type":50,"value":1227},{"type":45,"tag":207,"props":2214,"children":2215},{"style":331},[2216],{"type":50,"value":1302},{"type":45,"tag":207,"props":2218,"children":2219},{"style":331},[2220],{"type":50,"value":2221}," -timeout=10\n",{"type":45,"tag":207,"props":2223,"children":2224},{"class":209,"line":255},[2225],{"type":45,"tag":207,"props":2226,"children":2227},{"emptyLinePlaceholder":223},[2228],{"type":50,"value":226},{"type":45,"tag":207,"props":2230,"children":2231},{"class":209,"line":264},[2232],{"type":45,"tag":207,"props":2233,"children":2234},{"style":345},[2235],{"type":50,"value":2236},"# Use dictionary\n",{"type":45,"tag":207,"props":2238,"children":2239},{"class":209,"line":273},[2240,2244,2248,2252,2256,2260,2264],{"type":45,"tag":207,"props":2241,"children":2242},{"style":325},[2243],{"type":50,"value":328},{"type":45,"tag":207,"props":2245,"children":2246},{"style":331},[2247],{"type":50,"value":360},{"type":45,"tag":207,"props":2249,"children":2250},{"style":331},[2251],{"type":50,"value":334},{"type":45,"tag":207,"props":2253,"children":2254},{"style":331},[2255],{"type":50,"value":369},{"type":45,"tag":207,"props":2257,"children":2258},{"style":331},[2259],{"type":50,"value":1227},{"type":45,"tag":207,"props":2261,"children":2262},{"style":331},[2263],{"type":50,"value":1302},{"type":45,"tag":207,"props":2265,"children":2266},{"style":331},[2267],{"type":50,"value":2268}," -dict=dict.dict\n",{"type":45,"tag":207,"props":2270,"children":2271},{"class":209,"line":281},[2272],{"type":45,"tag":207,"props":2273,"children":2274},{"emptyLinePlaceholder":223},[2275],{"type":50,"value":226},{"type":45,"tag":207,"props":2277,"children":2278},{"class":209,"line":290},[2279],{"type":45,"tag":207,"props":2280,"children":2281},{"style":345},[2282],{"type":50,"value":2283},"# Limit maximum input size\n",{"type":45,"tag":207,"props":2285,"children":2286},{"class":209,"line":299},[2287,2291,2295,2299,2303,2307,2311],{"type":45,"tag":207,"props":2288,"children":2289},{"style":325},[2290],{"type":50,"value":328},{"type":45,"tag":207,"props":2292,"children":2293},{"style":331},[2294],{"type":50,"value":360},{"type":45,"tag":207,"props":2296,"children":2297},{"style":331},[2298],{"type":50,"value":334},{"type":45,"tag":207,"props":2300,"children":2301},{"style":331},[2302],{"type":50,"value":369},{"type":45,"tag":207,"props":2304,"children":2305},{"style":331},[2306],{"type":50,"value":1227},{"type":45,"tag":207,"props":2308,"children":2309},{"style":331},[2310],{"type":50,"value":1302},{"type":45,"tag":207,"props":2312,"children":2313},{"style":331},[2314],{"type":50,"value":2315}," -max_len=1024\n",{"type":45,"tag":387,"props":2317,"children":2319},{"id":2318},"multi-core-fuzzing",[2320],{"type":50,"value":2321},"Multi-Core Fuzzing",{"type":45,"tag":196,"props":2323,"children":2325},{"className":313,"code":2324,"language":315,"meta":200,"style":200},"# Experimental forking support (not recommended)\ncargo +nightly fuzz run --jobs 1 fuzz_target_1\n",[2326],{"type":45,"tag":203,"props":2327,"children":2328},{"__ignoreMap":200},[2329,2337],{"type":45,"tag":207,"props":2330,"children":2331},{"class":209,"line":210},[2332],{"type":45,"tag":207,"props":2333,"children":2334},{"style":345},[2335],{"type":50,"value":2336},"# Experimental forking support (not recommended)\n",{"type":45,"tag":207,"props":2338,"children":2339},{"class":209,"line":219},[2340,2344,2348,2352,2356,2361,2367],{"type":45,"tag":207,"props":2341,"children":2342},{"style":325},[2343],{"type":50,"value":328},{"type":45,"tag":207,"props":2345,"children":2346},{"style":331},[2347],{"type":50,"value":360},{"type":45,"tag":207,"props":2349,"children":2350},{"style":331},[2351],{"type":50,"value":334},{"type":45,"tag":207,"props":2353,"children":2354},{"style":331},[2355],{"type":50,"value":369},{"type":45,"tag":207,"props":2357,"children":2358},{"style":331},[2359],{"type":50,"value":2360}," --jobs",{"type":45,"tag":207,"props":2362,"children":2364},{"style":2363},"--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C",[2365],{"type":50,"value":2366}," 1",{"type":45,"tag":207,"props":2368,"children":2369},{"style":331},[2370],{"type":50,"value":374},{"type":45,"tag":52,"props":2372,"children":2373},{},[2374],{"type":50,"value":2375},"Note: The multi-core fuzzing feature is experimental and not recommended. For parallel fuzzing, consider running multiple instances manually or using AFL++.",{"type":45,"tag":58,"props":2377,"children":2379},{"id":2378},"real-world-examples",[2380],{"type":50,"value":2381},"Real-World Examples",{"type":45,"tag":387,"props":2383,"children":2385},{"id":2384},"example-ogg-crate",[2386],{"type":50,"value":2387},"Example: ogg Crate",{"type":45,"tag":52,"props":2389,"children":2390},{},[2391,2393,2400],{"type":50,"value":2392},"The ",{"type":45,"tag":402,"props":2394,"children":2397},{"href":2395,"rel":2396},"https:\u002F\u002Fgithub.com\u002FRustAudio\u002Fogg",[406],[2398],{"type":50,"value":2399},"ogg crate",{"type":50,"value":2401}," parses Ogg media container files. Parsers are excellent fuzzing targets because they handle untrusted data.",{"type":45,"tag":196,"props":2403,"children":2405},{"className":313,"code":2404,"language":315,"meta":200,"style":200},"# Clone and initialize\ngit clone https:\u002F\u002Fgithub.com\u002FRustAudio\u002Fogg.git\ncd ogg\u002F\ncargo fuzz init\n",[2406],{"type":45,"tag":203,"props":2407,"children":2408},{"__ignoreMap":200},[2409,2417,2435,2449],{"type":45,"tag":207,"props":2410,"children":2411},{"class":209,"line":210},[2412],{"type":45,"tag":207,"props":2413,"children":2414},{"style":345},[2415],{"type":50,"value":2416},"# Clone and initialize\n",{"type":45,"tag":207,"props":2418,"children":2419},{"class":209,"line":219},[2420,2425,2430],{"type":45,"tag":207,"props":2421,"children":2422},{"style":325},[2423],{"type":50,"value":2424},"git",{"type":45,"tag":207,"props":2426,"children":2427},{"style":331},[2428],{"type":50,"value":2429}," clone",{"type":45,"tag":207,"props":2431,"children":2432},{"style":331},[2433],{"type":50,"value":2434}," https:\u002F\u002Fgithub.com\u002FRustAudio\u002Fogg.git\n",{"type":45,"tag":207,"props":2436,"children":2437},{"class":209,"line":229},[2438,2444],{"type":45,"tag":207,"props":2439,"children":2441},{"style":2440},"--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF",[2442],{"type":50,"value":2443},"cd",{"type":45,"tag":207,"props":2445,"children":2446},{"style":331},[2447],{"type":50,"value":2448}," ogg\u002F\n",{"type":45,"tag":207,"props":2450,"children":2451},{"class":209,"line":238},[2452,2456,2460],{"type":45,"tag":207,"props":2453,"children":2454},{"style":325},[2455],{"type":50,"value":328},{"type":45,"tag":207,"props":2457,"children":2458},{"style":331},[2459],{"type":50,"value":334},{"type":45,"tag":207,"props":2461,"children":2462},{"style":331},[2463],{"type":50,"value":339},{"type":45,"tag":52,"props":2465,"children":2466},{},[2467,2469,2475],{"type":50,"value":2468},"Harness at ",{"type":45,"tag":203,"props":2470,"children":2472},{"className":2471},[],[2473],{"type":50,"value":2474},"fuzz\u002Ffuzz_targets\u002Ffuzz_target_1.rs",{"type":50,"value":1024},{"type":45,"tag":196,"props":2477,"children":2479},{"className":198,"code":2478,"language":22,"meta":200,"style":200},"#![no_main]\n\nuse ogg::{PacketReader, PacketWriter};\nuse ogg::writing::PacketWriteEndInfo;\nuse std::io::Cursor;\nuse libfuzzer_sys::fuzz_target;\n\nfn harness(data: &[u8]) {\n    let mut pck_rdr = PacketReader::new(Cursor::new(data.to_vec()));\n    pck_rdr.delete_unread_packets();\n\n    let output = Vec::new();\n    let mut pck_wtr = PacketWriter::new(Cursor::new(output));\n\n    if let Ok(_) = pck_rdr.read_packet() {\n        if let Ok(r) = pck_rdr.read_packet() {\n            match r {\n                Some(pck) => {\n                    let inf = if pck.last_in_stream() {\n                        PacketWriteEndInfo::EndStream\n                    } else if pck.last_in_page() {\n                        PacketWriteEndInfo::EndPage\n                    } else {\n                        PacketWriteEndInfo::NormalPacket\n                    };\n                    let stream_serial = pck.stream_serial();\n                    let absgp_page = pck.absgp_page();\n                    let _ = pck_wtr.write_packet(\n                        pck.data, stream_serial, inf, absgp_page\n                    );\n                }\n                None => return,\n            }\n        }\n    }\n}\n\nfuzz_target!(|data: &[u8]| {\n    harness(data);\n});\n",[2480],{"type":45,"tag":203,"props":2481,"children":2482},{"__ignoreMap":200},[2483,2490,2497,2505,2513,2521,2528,2535,2542,2550,2558,2565,2573,2581,2588,2596,2604,2612,2620,2629,2638,2647,2656,2665,2674,2683,2692,2701,2710,2719,2728,2737,2746,2755,2764,2772,2780,2788,2796,2804],{"type":45,"tag":207,"props":2484,"children":2485},{"class":209,"line":210},[2486],{"type":45,"tag":207,"props":2487,"children":2488},{},[2489],{"type":50,"value":216},{"type":45,"tag":207,"props":2491,"children":2492},{"class":209,"line":219},[2493],{"type":45,"tag":207,"props":2494,"children":2495},{"emptyLinePlaceholder":223},[2496],{"type":50,"value":226},{"type":45,"tag":207,"props":2498,"children":2499},{"class":209,"line":229},[2500],{"type":45,"tag":207,"props":2501,"children":2502},{},[2503],{"type":50,"value":2504},"use ogg::{PacketReader, PacketWriter};\n",{"type":45,"tag":207,"props":2506,"children":2507},{"class":209,"line":238},[2508],{"type":45,"tag":207,"props":2509,"children":2510},{},[2511],{"type":50,"value":2512},"use ogg::writing::PacketWriteEndInfo;\n",{"type":45,"tag":207,"props":2514,"children":2515},{"class":209,"line":246},[2516],{"type":45,"tag":207,"props":2517,"children":2518},{},[2519],{"type":50,"value":2520},"use std::io::Cursor;\n",{"type":45,"tag":207,"props":2522,"children":2523},{"class":209,"line":255},[2524],{"type":45,"tag":207,"props":2525,"children":2526},{},[2527],{"type":50,"value":235},{"type":45,"tag":207,"props":2529,"children":2530},{"class":209,"line":264},[2531],{"type":45,"tag":207,"props":2532,"children":2533},{"emptyLinePlaceholder":223},[2534],{"type":50,"value":226},{"type":45,"tag":207,"props":2536,"children":2537},{"class":209,"line":273},[2538],{"type":45,"tag":207,"props":2539,"children":2540},{},[2541],{"type":50,"value":252},{"type":45,"tag":207,"props":2543,"children":2544},{"class":209,"line":281},[2545],{"type":45,"tag":207,"props":2546,"children":2547},{},[2548],{"type":50,"value":2549},"    let mut pck_rdr = PacketReader::new(Cursor::new(data.to_vec()));\n",{"type":45,"tag":207,"props":2551,"children":2552},{"class":209,"line":290},[2553],{"type":45,"tag":207,"props":2554,"children":2555},{},[2556],{"type":50,"value":2557},"    pck_rdr.delete_unread_packets();\n",{"type":45,"tag":207,"props":2559,"children":2560},{"class":209,"line":299},[2561],{"type":45,"tag":207,"props":2562,"children":2563},{"emptyLinePlaceholder":223},[2564],{"type":50,"value":226},{"type":45,"tag":207,"props":2566,"children":2567},{"class":209,"line":701},[2568],{"type":45,"tag":207,"props":2569,"children":2570},{},[2571],{"type":50,"value":2572},"    let output = Vec::new();\n",{"type":45,"tag":207,"props":2574,"children":2575},{"class":209,"line":710},[2576],{"type":45,"tag":207,"props":2577,"children":2578},{},[2579],{"type":50,"value":2580},"    let mut pck_wtr = PacketWriter::new(Cursor::new(output));\n",{"type":45,"tag":207,"props":2582,"children":2583},{"class":209,"line":718},[2584],{"type":45,"tag":207,"props":2585,"children":2586},{"emptyLinePlaceholder":223},[2587],{"type":50,"value":226},{"type":45,"tag":207,"props":2589,"children":2590},{"class":209,"line":726},[2591],{"type":45,"tag":207,"props":2592,"children":2593},{},[2594],{"type":50,"value":2595},"    if let Ok(_) = pck_rdr.read_packet() {\n",{"type":45,"tag":207,"props":2597,"children":2598},{"class":209,"line":734},[2599],{"type":45,"tag":207,"props":2600,"children":2601},{},[2602],{"type":50,"value":2603},"        if let Ok(r) = pck_rdr.read_packet() {\n",{"type":45,"tag":207,"props":2605,"children":2606},{"class":209,"line":742},[2607],{"type":45,"tag":207,"props":2608,"children":2609},{},[2610],{"type":50,"value":2611},"            match r {\n",{"type":45,"tag":207,"props":2613,"children":2614},{"class":209,"line":1931},[2615],{"type":45,"tag":207,"props":2616,"children":2617},{},[2618],{"type":50,"value":2619},"                Some(pck) => {\n",{"type":45,"tag":207,"props":2621,"children":2623},{"class":209,"line":2622},19,[2624],{"type":45,"tag":207,"props":2625,"children":2626},{},[2627],{"type":50,"value":2628},"                    let inf = if pck.last_in_stream() {\n",{"type":45,"tag":207,"props":2630,"children":2632},{"class":209,"line":2631},20,[2633],{"type":45,"tag":207,"props":2634,"children":2635},{},[2636],{"type":50,"value":2637},"                        PacketWriteEndInfo::EndStream\n",{"type":45,"tag":207,"props":2639,"children":2641},{"class":209,"line":2640},21,[2642],{"type":45,"tag":207,"props":2643,"children":2644},{},[2645],{"type":50,"value":2646},"                    } else if pck.last_in_page() {\n",{"type":45,"tag":207,"props":2648,"children":2650},{"class":209,"line":2649},22,[2651],{"type":45,"tag":207,"props":2652,"children":2653},{},[2654],{"type":50,"value":2655},"                        PacketWriteEndInfo::EndPage\n",{"type":45,"tag":207,"props":2657,"children":2659},{"class":209,"line":2658},23,[2660],{"type":45,"tag":207,"props":2661,"children":2662},{},[2663],{"type":50,"value":2664},"                    } else {\n",{"type":45,"tag":207,"props":2666,"children":2668},{"class":209,"line":2667},24,[2669],{"type":45,"tag":207,"props":2670,"children":2671},{},[2672],{"type":50,"value":2673},"                        PacketWriteEndInfo::NormalPacket\n",{"type":45,"tag":207,"props":2675,"children":2677},{"class":209,"line":2676},25,[2678],{"type":45,"tag":207,"props":2679,"children":2680},{},[2681],{"type":50,"value":2682},"                    };\n",{"type":45,"tag":207,"props":2684,"children":2686},{"class":209,"line":2685},26,[2687],{"type":45,"tag":207,"props":2688,"children":2689},{},[2690],{"type":50,"value":2691},"                    let stream_serial = pck.stream_serial();\n",{"type":45,"tag":207,"props":2693,"children":2695},{"class":209,"line":2694},27,[2696],{"type":45,"tag":207,"props":2697,"children":2698},{},[2699],{"type":50,"value":2700},"                    let absgp_page = pck.absgp_page();\n",{"type":45,"tag":207,"props":2702,"children":2704},{"class":209,"line":2703},28,[2705],{"type":45,"tag":207,"props":2706,"children":2707},{},[2708],{"type":50,"value":2709},"                    let _ = pck_wtr.write_packet(\n",{"type":45,"tag":207,"props":2711,"children":2713},{"class":209,"line":2712},29,[2714],{"type":45,"tag":207,"props":2715,"children":2716},{},[2717],{"type":50,"value":2718},"                        pck.data, stream_serial, inf, absgp_page\n",{"type":45,"tag":207,"props":2720,"children":2722},{"class":209,"line":2721},30,[2723],{"type":45,"tag":207,"props":2724,"children":2725},{},[2726],{"type":50,"value":2727},"                    );\n",{"type":45,"tag":207,"props":2729,"children":2731},{"class":209,"line":2730},31,[2732],{"type":45,"tag":207,"props":2733,"children":2734},{},[2735],{"type":50,"value":2736},"                }\n",{"type":45,"tag":207,"props":2738,"children":2740},{"class":209,"line":2739},32,[2741],{"type":45,"tag":207,"props":2742,"children":2743},{},[2744],{"type":50,"value":2745},"                None => return,\n",{"type":45,"tag":207,"props":2747,"children":2749},{"class":209,"line":2748},33,[2750],{"type":45,"tag":207,"props":2751,"children":2752},{},[2753],{"type":50,"value":2754},"            }\n",{"type":45,"tag":207,"props":2756,"children":2758},{"class":209,"line":2757},34,[2759],{"type":45,"tag":207,"props":2760,"children":2761},{},[2762],{"type":50,"value":2763},"        }\n",{"type":45,"tag":207,"props":2765,"children":2767},{"class":209,"line":2766},35,[2768],{"type":45,"tag":207,"props":2769,"children":2770},{},[2771],{"type":50,"value":683},{"type":45,"tag":207,"props":2773,"children":2775},{"class":209,"line":2774},36,[2776],{"type":45,"tag":207,"props":2777,"children":2778},{},[2779],{"type":50,"value":270},{"type":45,"tag":207,"props":2781,"children":2783},{"class":209,"line":2782},37,[2784],{"type":45,"tag":207,"props":2785,"children":2786},{"emptyLinePlaceholder":223},[2787],{"type":50,"value":226},{"type":45,"tag":207,"props":2789,"children":2791},{"class":209,"line":2790},38,[2792],{"type":45,"tag":207,"props":2793,"children":2794},{},[2795],{"type":50,"value":287},{"type":45,"tag":207,"props":2797,"children":2799},{"class":209,"line":2798},39,[2800],{"type":45,"tag":207,"props":2801,"children":2802},{},[2803],{"type":50,"value":296},{"type":45,"tag":207,"props":2805,"children":2807},{"class":209,"line":2806},40,[2808],{"type":45,"tag":207,"props":2809,"children":2810},{},[2811],{"type":50,"value":305},{"type":45,"tag":52,"props":2813,"children":2814},{},[2815],{"type":50,"value":2816},"Seed the corpus:",{"type":45,"tag":196,"props":2818,"children":2820},{"className":313,"code":2819,"language":315,"meta":200,"style":200},"mkdir fuzz\u002Fcorpus\u002Ffuzz_target_1\u002F\ncurl -o fuzz\u002Fcorpus\u002Ffuzz_target_1\u002F320x240.ogg \\\n  https:\u002F\u002Fcommons.wikimedia.org\u002Fwiki\u002FFile:320x240.ogg\n",[2821],{"type":45,"tag":203,"props":2822,"children":2823},{"__ignoreMap":200},[2824,2837,2860],{"type":45,"tag":207,"props":2825,"children":2826},{"class":209,"line":210},[2827,2832],{"type":45,"tag":207,"props":2828,"children":2829},{"style":325},[2830],{"type":50,"value":2831},"mkdir",{"type":45,"tag":207,"props":2833,"children":2834},{"style":331},[2835],{"type":50,"value":2836}," fuzz\u002Fcorpus\u002Ffuzz_target_1\u002F\n",{"type":45,"tag":207,"props":2838,"children":2839},{"class":209,"line":219},[2840,2845,2850,2855],{"type":45,"tag":207,"props":2841,"children":2842},{"style":325},[2843],{"type":50,"value":2844},"curl",{"type":45,"tag":207,"props":2846,"children":2847},{"style":331},[2848],{"type":50,"value":2849}," -o",{"type":45,"tag":207,"props":2851,"children":2852},{"style":331},[2853],{"type":50,"value":2854}," fuzz\u002Fcorpus\u002Ffuzz_target_1\u002F320x240.ogg",{"type":45,"tag":207,"props":2856,"children":2857},{"style":1246},[2858],{"type":50,"value":2859}," \\\n",{"type":45,"tag":207,"props":2861,"children":2862},{"class":209,"line":229},[2863],{"type":45,"tag":207,"props":2864,"children":2865},{"style":331},[2866],{"type":50,"value":2867},"  https:\u002F\u002Fcommons.wikimedia.org\u002Fwiki\u002FFile:320x240.ogg\n",{"type":45,"tag":52,"props":2869,"children":2870},{},[2871],{"type":50,"value":2872},"Run:",{"type":45,"tag":196,"props":2874,"children":2875},{"className":313,"code":1064,"language":315,"meta":200,"style":200},[2876],{"type":45,"tag":203,"props":2877,"children":2878},{"__ignoreMap":200},[2879],{"type":45,"tag":207,"props":2880,"children":2881},{"class":209,"line":210},[2882,2886,2890,2894,2898],{"type":45,"tag":207,"props":2883,"children":2884},{"style":325},[2885],{"type":50,"value":328},{"type":45,"tag":207,"props":2887,"children":2888},{"style":331},[2889],{"type":50,"value":360},{"type":45,"tag":207,"props":2891,"children":2892},{"style":331},[2893],{"type":50,"value":334},{"type":45,"tag":207,"props":2895,"children":2896},{"style":331},[2897],{"type":50,"value":369},{"type":45,"tag":207,"props":2899,"children":2900},{"style":331},[2901],{"type":50,"value":374},{"type":45,"tag":52,"props":2903,"children":2904},{},[2905],{"type":50,"value":2906},"Analyze coverage:",{"type":45,"tag":196,"props":2908,"children":2910},{"className":313,"code":2909,"language":315,"meta":200,"style":200},"cargo +nightly fuzz coverage fuzz_target_1\n.\u002Fgenerate_html fuzz_target_1 src\u002Flib.rs\n",[2911],{"type":45,"tag":203,"props":2912,"children":2913},{"__ignoreMap":200},[2914,2937],{"type":45,"tag":207,"props":2915,"children":2916},{"class":209,"line":210},[2917,2921,2925,2929,2933],{"type":45,"tag":207,"props":2918,"children":2919},{"style":325},[2920],{"type":50,"value":328},{"type":45,"tag":207,"props":2922,"children":2923},{"style":331},[2924],{"type":50,"value":360},{"type":45,"tag":207,"props":2926,"children":2927},{"style":331},[2928],{"type":50,"value":334},{"type":45,"tag":207,"props":2930,"children":2931},{"style":331},[2932],{"type":50,"value":1756},{"type":45,"tag":207,"props":2934,"children":2935},{"style":331},[2936],{"type":50,"value":374},{"type":45,"tag":207,"props":2938,"children":2939},{"class":209,"line":219},[2940,2944,2948],{"type":45,"tag":207,"props":2941,"children":2942},{"style":325},[2943],{"type":50,"value":1966},{"type":45,"tag":207,"props":2945,"children":2946},{"style":331},[2947],{"type":50,"value":1227},{"type":45,"tag":207,"props":2949,"children":2950},{"style":331},[2951],{"type":50,"value":1975},{"type":45,"tag":58,"props":2953,"children":2955},{"id":2954},"troubleshooting",[2956],{"type":50,"value":2957},"Troubleshooting",{"type":45,"tag":70,"props":2959,"children":2960},{},[2961,2982],{"type":45,"tag":74,"props":2962,"children":2963},{},[2964],{"type":45,"tag":78,"props":2965,"children":2966},{},[2967,2972,2977],{"type":45,"tag":82,"props":2968,"children":2969},{},[2970],{"type":50,"value":2971},"Problem",{"type":45,"tag":82,"props":2973,"children":2974},{},[2975],{"type":50,"value":2976},"Cause",{"type":45,"tag":82,"props":2978,"children":2979},{},[2980],{"type":50,"value":2981},"Solution",{"type":45,"tag":98,"props":2983,"children":2984},{},[2985,3008,3033,3064,3088,3111],{"type":45,"tag":78,"props":2986,"children":2987},{},[2988,2993,2998],{"type":45,"tag":105,"props":2989,"children":2990},{},[2991],{"type":50,"value":2992},"\"requires nightly\" error",{"type":45,"tag":105,"props":2994,"children":2995},{},[2996],{"type":50,"value":2997},"Using stable toolchain",{"type":45,"tag":105,"props":2999,"children":3000},{},[3001,3002],{"type":50,"value":796},{"type":45,"tag":203,"props":3003,"children":3005},{"className":3004},[],[3006],{"type":50,"value":3007},"cargo +nightly fuzz",{"type":45,"tag":78,"props":3009,"children":3010},{},[3011,3016,3021],{"type":45,"tag":105,"props":3012,"children":3013},{},[3014],{"type":50,"value":3015},"Slow fuzzing performance",{"type":45,"tag":105,"props":3017,"children":3018},{},[3019],{"type":50,"value":3020},"ASan enabled for safe Rust",{"type":45,"tag":105,"props":3022,"children":3023},{},[3024,3026,3031],{"type":50,"value":3025},"Add ",{"type":45,"tag":203,"props":3027,"children":3029},{"className":3028},[],[3030],{"type":50,"value":2063},{"type":50,"value":3032}," flag",{"type":45,"tag":78,"props":3034,"children":3035},{},[3036,3041,3046],{"type":45,"tag":105,"props":3037,"children":3038},{},[3039],{"type":50,"value":3040},"\"cannot find binary\"",{"type":45,"tag":105,"props":3042,"children":3043},{},[3044],{"type":50,"value":3045},"No library crate",{"type":45,"tag":105,"props":3047,"children":3048},{},[3049,3051,3056,3058],{"type":50,"value":3050},"Move code from ",{"type":45,"tag":203,"props":3052,"children":3054},{"className":3053},[],[3055],{"type":50,"value":550},{"type":50,"value":3057}," to ",{"type":45,"tag":203,"props":3059,"children":3061},{"className":3060},[],[3062],{"type":50,"value":3063},"lib.rs",{"type":45,"tag":78,"props":3065,"children":3066},{},[3067,3072,3077],{"type":45,"tag":105,"props":3068,"children":3069},{},[3070],{"type":50,"value":3071},"Sanitizer compilation issues",{"type":45,"tag":105,"props":3073,"children":3074},{},[3075],{"type":50,"value":3076},"Wrong nightly version",{"type":45,"tag":105,"props":3078,"children":3079},{},[3080,3082],{"type":50,"value":3081},"Try different nightly: ",{"type":45,"tag":203,"props":3083,"children":3085},{"className":3084},[],[3086],{"type":50,"value":3087},"rustup install nightly-2024-01-01",{"type":45,"tag":78,"props":3089,"children":3090},{},[3091,3096,3101],{"type":45,"tag":105,"props":3092,"children":3093},{},[3094],{"type":50,"value":3095},"Low coverage",{"type":45,"tag":105,"props":3097,"children":3098},{},[3099],{"type":50,"value":3100},"Missing seed corpus",{"type":45,"tag":105,"props":3102,"children":3103},{},[3104,3106],{"type":50,"value":3105},"Add sample inputs to ",{"type":45,"tag":203,"props":3107,"children":3109},{"className":3108},[],[3110],{"type":50,"value":1461},{"type":45,"tag":78,"props":3112,"children":3113},{},[3114,3119,3124],{"type":45,"tag":105,"props":3115,"children":3116},{},[3117],{"type":50,"value":3118},"Magic value not found",{"type":45,"tag":105,"props":3120,"children":3121},{},[3122],{"type":50,"value":3123},"No dictionary",{"type":45,"tag":105,"props":3125,"children":3126},{},[3127],{"type":50,"value":3128},"Create dictionary file with magic values",{"type":45,"tag":58,"props":3130,"children":3132},{"id":3131},"related-skills",[3133],{"type":50,"value":3134},"Related Skills",{"type":45,"tag":387,"props":3136,"children":3138},{"id":3137},"technique-skills",[3139],{"type":50,"value":3140},"Technique Skills",{"type":45,"tag":70,"props":3142,"children":3143},{},[3144,3160],{"type":45,"tag":74,"props":3145,"children":3146},{},[3147],{"type":45,"tag":78,"props":3148,"children":3149},{},[3150,3155],{"type":45,"tag":82,"props":3151,"children":3152},{},[3153],{"type":50,"value":3154},"Skill",{"type":45,"tag":82,"props":3156,"children":3157},{},[3158],{"type":50,"value":3159},"Use Case",{"type":45,"tag":98,"props":3161,"children":3162},{},[3163,3185,3200,3215,3231],{"type":45,"tag":78,"props":3164,"children":3165},{},[3166,3173],{"type":45,"tag":105,"props":3167,"children":3168},{},[3169],{"type":45,"tag":159,"props":3170,"children":3171},{},[3172],{"type":50,"value":870},{"type":45,"tag":105,"props":3174,"children":3175},{},[3176,3178,3183],{"type":50,"value":3177},"Structure-aware fuzzing with ",{"type":45,"tag":203,"props":3179,"children":3181},{"className":3180},[],[3182],{"type":50,"value":863},{"type":50,"value":3184}," crate",{"type":45,"tag":78,"props":3186,"children":3187},{},[3188,3195],{"type":45,"tag":105,"props":3189,"children":3190},{},[3191],{"type":45,"tag":159,"props":3192,"children":3193},{},[3194],{"type":50,"value":1628},{"type":45,"tag":105,"props":3196,"children":3197},{},[3198],{"type":50,"value":3199},"Understanding ASan output and configuration",{"type":45,"tag":78,"props":3201,"children":3202},{},[3203,3210],{"type":45,"tag":105,"props":3204,"children":3205},{},[3206],{"type":45,"tag":159,"props":3207,"children":3208},{},[3209],{"type":50,"value":1632},{"type":45,"tag":105,"props":3211,"children":3212},{},[3213],{"type":50,"value":3214},"Measuring and improving fuzzing effectiveness",{"type":45,"tag":78,"props":3216,"children":3217},{},[3218,3226],{"type":45,"tag":105,"props":3219,"children":3220},{},[3221],{"type":45,"tag":159,"props":3222,"children":3223},{},[3224],{"type":50,"value":3225},"fuzzing-corpus",{"type":45,"tag":105,"props":3227,"children":3228},{},[3229],{"type":50,"value":3230},"Building and managing seed corpora",{"type":45,"tag":78,"props":3232,"children":3233},{},[3234,3242],{"type":45,"tag":105,"props":3235,"children":3236},{},[3237],{"type":45,"tag":159,"props":3238,"children":3239},{},[3240],{"type":50,"value":3241},"fuzzing-dictionaries",{"type":45,"tag":105,"props":3243,"children":3244},{},[3245],{"type":50,"value":3246},"Creating dictionaries for format-aware fuzzing",{"type":45,"tag":387,"props":3248,"children":3250},{"id":3249},"related-fuzzers",[3251],{"type":50,"value":3252},"Related Fuzzers",{"type":45,"tag":70,"props":3254,"children":3255},{},[3256,3271],{"type":45,"tag":74,"props":3257,"children":3258},{},[3259],{"type":45,"tag":78,"props":3260,"children":3261},{},[3262,3266],{"type":45,"tag":82,"props":3263,"children":3264},{},[3265],{"type":50,"value":3154},{"type":45,"tag":82,"props":3267,"children":3268},{},[3269],{"type":50,"value":3270},"When to Consider",{"type":45,"tag":98,"props":3272,"children":3273},{},[3274,3290,3306],{"type":45,"tag":78,"props":3275,"children":3276},{},[3277,3285],{"type":45,"tag":105,"props":3278,"children":3279},{},[3280],{"type":45,"tag":159,"props":3281,"children":3282},{},[3283],{"type":50,"value":3284},"libfuzzer",{"type":45,"tag":105,"props":3286,"children":3287},{},[3288],{"type":50,"value":3289},"Fuzzing C\u002FC++ code with similar workflow",{"type":45,"tag":78,"props":3291,"children":3292},{},[3293,3301],{"type":45,"tag":105,"props":3294,"children":3295},{},[3296],{"type":45,"tag":159,"props":3297,"children":3298},{},[3299],{"type":50,"value":3300},"aflpp",{"type":45,"tag":105,"props":3302,"children":3303},{},[3304],{"type":50,"value":3305},"Multi-core fuzzing or non-Cargo Rust projects",{"type":45,"tag":78,"props":3307,"children":3308},{},[3309,3317],{"type":45,"tag":105,"props":3310,"children":3311},{},[3312],{"type":45,"tag":159,"props":3313,"children":3314},{},[3315],{"type":50,"value":3316},"libafl",{"type":45,"tag":105,"props":3318,"children":3319},{},[3320],{"type":50,"value":3321},"Advanced fuzzing research or custom fuzzer development",{"type":45,"tag":58,"props":3323,"children":3325},{"id":3324},"resources",[3326],{"type":50,"value":3327},"Resources",{"type":45,"tag":52,"props":3329,"children":3330},{},[3331,3341],{"type":45,"tag":159,"props":3332,"children":3333},{},[3334],{"type":45,"tag":402,"props":3335,"children":3338},{"href":3336,"rel":3337},"https:\u002F\u002Frust-fuzz.github.io\u002Fbook\u002Fcargo-fuzz.html",[406],[3339],{"type":50,"value":3340},"Rust Fuzz Book - cargo-fuzz",{"type":50,"value":3342},"\nOfficial documentation for cargo-fuzz covering installation, usage, and advanced features.",{"type":45,"tag":52,"props":3344,"children":3345},{},[3346,3356],{"type":45,"tag":159,"props":3347,"children":3348},{},[3349],{"type":45,"tag":402,"props":3350,"children":3353},{"href":3351,"rel":3352},"https:\u002F\u002Fdocs.rs\u002Farbitrary\u002Flatest\u002Farbitrary\u002F",[406],[3354],{"type":50,"value":3355},"arbitrary crate documentation",{"type":50,"value":3357},"\nGuide to structure-aware fuzzing with automatic derivation for Rust types.",{"type":45,"tag":52,"props":3359,"children":3360},{},[3361,3371],{"type":45,"tag":159,"props":3362,"children":3363},{},[3364],{"type":45,"tag":402,"props":3365,"children":3368},{"href":3366,"rel":3367},"https:\u002F\u002Fgithub.com\u002Frust-fuzz\u002Fcargo-fuzz",[406],[3369],{"type":50,"value":3370},"cargo-fuzz GitHub Repository",{"type":50,"value":3372},"\nSource code, issue tracker, and examples for cargo-fuzz.",{"type":45,"tag":3374,"props":3375,"children":3376},"style",{},[3377],{"type":50,"value":3378},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":3380,"total":3472},[3381,3395,3404,3424,3439,3450,3462],{"slug":1628,"name":1628,"fn":3382,"description":3383,"org":3384,"tags":3385,"stars":26,"repoUrl":27,"updatedAt":3394},"detect memory errors during fuzzing","AddressSanitizer detects memory errors during fuzzing. Use when fuzzing C\u002FC++ code to find buffer overflows and use-after-free bugs.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3386,3389,3392,3393],{"name":3387,"slug":3388,"type":16},"C#","c",{"name":3390,"slug":3391,"type":16},"Debugging","debugging",{"name":14,"slug":15,"type":16},{"name":24,"slug":25,"type":16},"2026-07-17T06:05:14.925095",{"slug":3300,"name":3300,"fn":3396,"description":3397,"org":3398,"tags":3399,"stars":26,"repoUrl":27,"updatedAt":3403},"perform multi-core fuzzing of C\u002FC++ projects","AFL++ is a fork of AFL with better fuzzing performance and advanced features. Use for multi-core fuzzing of C\u002FC++ projects.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3400,3401,3402],{"name":3387,"slug":3388,"type":16},{"name":14,"slug":15,"type":16},{"name":24,"slug":25,"type":16},"2026-07-17T06:05:12.433192",{"slug":3405,"name":3405,"fn":3406,"description":3407,"org":3408,"tags":3409,"stars":26,"repoUrl":27,"updatedAt":3423},"agentic-actions-auditor","audit GitHub Actions for security vulnerabilities","Audits GitHub Actions workflows for security vulnerabilities in AI agent integrations including Claude Code Action, Gemini CLI, OpenAI Codex, and GitHub AI Inference. Detects attack vectors where attacker-controlled input reaches AI agents running in CI\u002FCD pipelines, including env var intermediary patterns, direct expression injection, dangerous sandbox configurations, and wildcard user allowlists. Use when reviewing workflow files that invoke AI coding agents, auditing CI\u002FCD pipeline security for prompt injection risks, or evaluating agentic action configurations.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3410,3413,3416,3419,3422],{"name":3411,"slug":3412,"type":16},"Agents","agents",{"name":3414,"slug":3415,"type":16},"CI\u002FCD","ci-cd",{"name":3417,"slug":3418,"type":16},"Code Analysis","code-analysis",{"name":3420,"slug":3421,"type":16},"GitHub Actions","github-actions",{"name":14,"slug":15,"type":16},"2026-07-18T05:47:48.564744",{"slug":3425,"name":3425,"fn":3426,"description":3427,"org":3428,"tags":3429,"stars":26,"repoUrl":27,"updatedAt":3438},"algorand-vulnerability-scanner","scan Algorand smart contracts for vulnerabilities","Scans Algorand smart contracts for 11 common vulnerabilities including rekeying attacks, unchecked transaction fees, missing field validations, and access control issues. Use when auditing Algorand projects (TEAL\u002FPyTeal).",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3430,3433,3434,3435],{"name":3431,"slug":3432,"type":16},"Audit","audit",{"name":3417,"slug":3418,"type":16},{"name":14,"slug":15,"type":16},{"name":3436,"slug":3437,"type":16},"Smart Contracts","smart-contracts","2026-07-18T05:47:43.989063",{"slug":3440,"name":3440,"fn":3441,"description":3442,"org":3443,"tags":3444,"stars":26,"repoUrl":27,"updatedAt":3449},"ask-questions-if-underspecified","clarify requirements before implementation","Clarify requirements before implementing. Use when serious doubts arise.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3445,3446],{"name":18,"slug":19,"type":16},{"name":3447,"slug":3448,"type":16},"Productivity","productivity","2026-07-17T06:05:33.543262",{"slug":3451,"name":3451,"fn":3452,"description":3453,"org":3454,"tags":3455,"stars":26,"repoUrl":27,"updatedAt":3461},"atheris","fuzz Python code with Atheris","Atheris is a coverage-guided Python fuzzer based on libFuzzer. Use for fuzzing pure Python code and Python C extensions.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3456,3459,3460],{"name":3457,"slug":3458,"type":16},"Python","python",{"name":14,"slug":15,"type":16},{"name":24,"slug":25,"type":16},"2026-07-17T06:05:14.575191",{"slug":3463,"name":3463,"fn":3464,"description":3465,"org":3466,"tags":3467,"stars":26,"repoUrl":27,"updatedAt":3471},"audit-augmentation","augment code graphs with audit findings","Augments Trailmark code graphs with external audit findings from SARIF static analysis results, weAudit annotation files, and version-gated Trailmark 0.4.x binary-analysis graph exports. Maps findings to graph nodes by file and line overlap, creates severity-based subgraphs, and enables cross-referencing findings with pre-analysis data (blast radius, taint, etc.). Use when projecting SARIF results onto a code graph, overlaying weAudit annotations, importing binary graph findings, cross-referencing Semgrep, CodeQL, or binary-analysis findings with call graph data, or visualizing audit findings in the context of code structure.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3468,3469,3470],{"name":3431,"slug":3432,"type":16},{"name":3417,"slug":3418,"type":16},{"name":14,"slug":15,"type":16},"2026-08-01T05:44:54.920542",77,{"items":3474,"total":3578},[3475,3482,3488,3496,3503,3508,3514,3520,3533,3544,3556,3567],{"slug":1628,"name":1628,"fn":3382,"description":3383,"org":3476,"tags":3477,"stars":26,"repoUrl":27,"updatedAt":3394},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3478,3479,3480,3481],{"name":3387,"slug":3388,"type":16},{"name":3390,"slug":3391,"type":16},{"name":14,"slug":15,"type":16},{"name":24,"slug":25,"type":16},{"slug":3300,"name":3300,"fn":3396,"description":3397,"org":3483,"tags":3484,"stars":26,"repoUrl":27,"updatedAt":3403},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3485,3486,3487],{"name":3387,"slug":3388,"type":16},{"name":14,"slug":15,"type":16},{"name":24,"slug":25,"type":16},{"slug":3405,"name":3405,"fn":3406,"description":3407,"org":3489,"tags":3490,"stars":26,"repoUrl":27,"updatedAt":3423},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3491,3492,3493,3494,3495],{"name":3411,"slug":3412,"type":16},{"name":3414,"slug":3415,"type":16},{"name":3417,"slug":3418,"type":16},{"name":3420,"slug":3421,"type":16},{"name":14,"slug":15,"type":16},{"slug":3425,"name":3425,"fn":3426,"description":3427,"org":3497,"tags":3498,"stars":26,"repoUrl":27,"updatedAt":3438},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3499,3500,3501,3502],{"name":3431,"slug":3432,"type":16},{"name":3417,"slug":3418,"type":16},{"name":14,"slug":15,"type":16},{"name":3436,"slug":3437,"type":16},{"slug":3440,"name":3440,"fn":3441,"description":3442,"org":3504,"tags":3505,"stars":26,"repoUrl":27,"updatedAt":3449},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3506,3507],{"name":18,"slug":19,"type":16},{"name":3447,"slug":3448,"type":16},{"slug":3451,"name":3451,"fn":3452,"description":3453,"org":3509,"tags":3510,"stars":26,"repoUrl":27,"updatedAt":3461},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3511,3512,3513],{"name":3457,"slug":3458,"type":16},{"name":14,"slug":15,"type":16},{"name":24,"slug":25,"type":16},{"slug":3463,"name":3463,"fn":3464,"description":3465,"org":3515,"tags":3516,"stars":26,"repoUrl":27,"updatedAt":3471},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3517,3518,3519],{"name":3431,"slug":3432,"type":16},{"name":3417,"slug":3418,"type":16},{"name":14,"slug":15,"type":16},{"slug":3521,"name":3521,"fn":3522,"description":3523,"org":3524,"tags":3525,"stars":26,"repoUrl":27,"updatedAt":3532},"audit-context-building","build architectural context for code analysis","Enables ultra-granular, line-by-line code analysis to build deep architectural context before vulnerability or bug finding.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3526,3529,3530,3531],{"name":3527,"slug":3528,"type":16},"Architecture","architecture",{"name":3431,"slug":3432,"type":16},{"name":3417,"slug":3418,"type":16},{"name":18,"slug":19,"type":16},"2026-07-18T05:47:40.122449",{"slug":3534,"name":3534,"fn":3535,"description":3536,"org":3537,"tags":3538,"stars":26,"repoUrl":27,"updatedAt":3543},"audit-prep-assistant","prepare codebases for security audits","Prepares codebases for security review using Trail of Bits' checklist. Helps set review goals, runs static analysis tools, increases test coverage, removes dead code, ensures accessibility, and generates documentation (flowcharts, user stories, inline comments).",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3539,3540,3541,3542],{"name":3431,"slug":3432,"type":16},{"name":3417,"slug":3418,"type":16},{"name":18,"slug":19,"type":16},{"name":14,"slug":15,"type":16},"2026-07-18T05:47:39.210985",{"slug":3545,"name":3545,"fn":3546,"description":3547,"org":3548,"tags":3549,"stars":26,"repoUrl":27,"updatedAt":3555},"burpsuite-project-parser","parse Burp Suite project files","Searches and explores Burp Suite project files (.burp) from the command line. Use when searching response headers or bodies with regex patterns, extracting security audit findings, dumping proxy history or site map data, or analyzing HTTP traffic captured in a Burp project.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3550,3551,3554],{"name":3431,"slug":3432,"type":16},{"name":3552,"slug":3553,"type":16},"CLI","cli",{"name":14,"slug":15,"type":16},"2026-07-17T06:05:33.198077",{"slug":3557,"name":3557,"fn":3558,"description":3559,"org":3560,"tags":3561,"stars":26,"repoUrl":27,"updatedAt":3566},"c-review","audit C and C++ code","Performs comprehensive C\u002FC++ security review for memory corruption, integer overflows, race conditions, and platform-specific vulnerabilities. Use when auditing native C\u002FC++ applications, reviewing daemons or services for memory safety, or hunting integer overflow \u002F use-after-free \u002F race conditions in userspace code.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3562,3563,3564,3565],{"name":3431,"slug":3432,"type":16},{"name":3387,"slug":3388,"type":16},{"name":3417,"slug":3418,"type":16},{"name":14,"slug":15,"type":16},"2026-07-17T06:05:11.333374",{"slug":3568,"name":3568,"fn":3569,"description":3570,"org":3571,"tags":3572,"stars":26,"repoUrl":27,"updatedAt":3577},"cairo-vulnerability-scanner","scan Cairo and StarkNet contracts for vulnerabilities","Scans Cairo\u002FStarkNet smart contracts for 6 critical vulnerabilities including felt252 arithmetic overflow, L1-L2 messaging issues, address conversion problems, and signature replay. Use when auditing StarkNet projects.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3573,3574,3575,3576],{"name":3431,"slug":3432,"type":16},{"name":3417,"slug":3418,"type":16},{"name":14,"slug":15,"type":16},{"name":3436,"slug":3437,"type":16},"2026-07-18T05:47:42.84568",111]