2026-02-26 11:50:51 +01:00
..
2026-02-26 11:50:51 +01:00
2026-02-26 11:50:51 +01:00
2026-02-26 11:50:51 +01:00
2026-02-26 11:50:51 +01:00

Fuzzing geolog

This directory contains fuzz targets for finding bugs and edge cases in geolog.

Requirements

Fuzzing requires the nightly Rust compiler due to sanitizer support:

rustup install nightly
rustup default nightly  # or use +nightly flag

Available Targets

  • fuzz_parser: Exercises the lexer and parser with arbitrary UTF-8 input
  • fuzz_repl: Exercises the full REPL execution pipeline

Running Fuzzers

# List all fuzz targets
cargo fuzz list

# Run the parser fuzzer
cargo +nightly fuzz run fuzz_parser

# Run the REPL fuzzer
cargo +nightly fuzz run fuzz_repl

# Run with a time limit (e.g., 60 seconds)
cargo +nightly fuzz run fuzz_parser -- -max_total_time=60

# Run with a corpus directory
cargo +nightly fuzz run fuzz_parser corpus/fuzz_parser

Corpus

Interesting inputs found during fuzzing are automatically saved to corpus/<target_name>/. These can be used to reproduce issues:

# Reproduce a crash
cargo +nightly fuzz run fuzz_parser corpus/fuzz_parser/<crash_file>

Minimizing Crashes

cargo +nightly fuzz tmin fuzz_parser <crash_file>

Coverage

Generate coverage reports:

cargo +nightly fuzz coverage fuzz_parser