Skip to content

Add a fuzz harness for the parser and WebSocket frames #301

Closed

Description

@jsam

From the production audit (P0-1 follow-up, setup notes in the audit report 7.2): the repo has no fuzz harness. Add cargo-fuzz targets for the IQL parser and the WS frame decoder, seed them with the deep-nesting and oversized-body cases from #295, and run a campaign on the benchmark host.

Activity

  1. jsam commented on Oct 6, 2026

    @jsam
    ContributorAuthor

    Campaign results for the harness merged in #405. All runs were on the devbox: ASan, debug assertions, 2 libFuzzer workers per target, all three targets in parallel.

    run duration iql_statement iql_program ws_client_frame findings
    before the fix 15 min 907k execs, cov 6227 590k execs, cov 6740 730k execs, cov 5918 4 crashes in iql_statement, all one root cause: #397 (fixed in the same PR; inputs kept in fuzz/regressions/iql_statement/)
    with the fix 20 min 987k execs, cov 6375 580k execs, cov 7001 728k execs, cov 6158 none: no crash, timeout (10 s) or OOM (2 GiB)

    The planned 1-hour campaign on the benchmark host (8 workers per target) did not run. It waited behind the host's shared lock, and the host was then powered off. To run it when the host is back: flock ~/perf-gate-remote/lock make fuzz FUZZ_SECS=3600 with FUZZ_FORKS=8 (see fuzz/README.md).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions