name: Fuzzing
on:
schedule:
- cron: '0 2 * * *' # Run at 2 AM every day
workflow_dispatch:
jobs:
fuzz:
name: cargo-fuzz
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Rust nightly
uses: dtolnay/rust-toolchain@nightly
- name: Install cargo-fuzz
run: cargo install cargo-fuzz
# Run every declared fuzz target. `cargo-fuzz` fails the job on the first
# crash it finds, so any regression in a protocol/parser surface blocks CI.
- name: Run fuzz_router
run: cargo +nightly fuzz run fuzz_router -- -max_total_time=300
- name: Run fuzz_file_paths
run: cargo +nightly fuzz run fuzz_file_paths -- -max_total_time=300
- name: Run fuzz_multipart
run: cargo +nightly fuzz run fuzz_multipart -- -max_total_time=300
- name: Run fuzz_body
run: cargo +nightly fuzz run fuzz_body -- -max_total_time=300
- name: Run fuzz_query_params
run: cargo +nightly fuzz run fuzz_query_params -- -max_total_time=300
- name: Run fuzz_headers
run: cargo +nightly fuzz run fuzz_headers -- -max_total_time=300
- name: Run fuzz_jwt
run: cargo +nightly fuzz run fuzz_jwt -- -max_total_time=300
- name: Run fuzz_pipeline
run: cargo +nightly fuzz run fuzz_pipeline -- -max_total_time=300
- name: Run fuzz_websocket
run: cargo +nightly fuzz run fuzz_websocket -- -max_total_time=300
- name: Run fuzz_grpc
run: cargo +nightly fuzz run fuzz_grpc -- -max_total_time=300