grok-build-upstream-mirror/crates/codegen/xai-grok-markdown/fuzz
Repository files (latest commit first)
Filename Latest commit message Latest commit date
grokkybara[bot] c68e39f604 Publish harness and TUI open-source
initial sync from the monorepo
2026-07-16 06:46:02 +01:00
..
fuzz_targets Publish harness and TUI open-source 2026-07-16 06:46:02 +01:00
seeds/render_all Publish harness and TUI open-source 2026-07-16 06:46:02 +01:00
.gitignore Publish harness and TUI open-source 2026-07-16 06:46:02 +01:00
Cargo.lock Publish harness and TUI open-source 2026-07-16 06:46:02 +01:00
Cargo.toml Publish harness and TUI open-source 2026-07-16 06:46:02 +01:00
README.md Publish harness and TUI open-source 2026-07-16 06:46:02 +01:00

Fuzzing xai-grok-markdown

Coverage-guided fuzzing for the markdown renderer using cargo-fuzz (libFuzzer).

Prerequisites

cargo install cargo-fuzz   # if not already installed
rustup toolchain install nightly

Targets

Target What it fuzzes
render_all All 8 combos: pretty × syntect × {full, streaming} for every input

Each iteration runs:

  • render_markdown_ratatui_full() — 4 combos (pretty/non-pretty × syntect/no-syntect)
  • StreamingMarkdownRenderer char-by-char — same 4 combos

Running

From crates/codegen/xai-grok-markdown:

# Run indefinitely (Ctrl-C to stop):
cargo +nightly fuzz run render_all fuzz/corpus/render_all fuzz/seeds/render_all -- -max_len=16384

# Run for 5 minutes:
cargo +nightly fuzz run render_all fuzz/corpus/render_all fuzz/seeds/render_all -- -max_len=16384 -max_total_time=300
  • corpus/ — auto-generated inputs (gitignored)
  • seeds/ — hand-written seed inputs (checked in)

Reproducing a crash

When a crash is found, the input is saved to artifacts/render_all/crash-<hash>. Reproduce it with:

cargo +nightly fuzz run render_all fuzz/artifacts/render_all/crash-<hash>

Adding seed inputs

Drop .txt or .md files into seeds/render_all/. Good seeds cover distinct markdown features (tables, code blocks, emoji, nested lists, etc.) and help the fuzzer reach new code paths faster.