Skip to content

test(fuzz): fuzz parsers and protocol decoders on pull requests and schedules #144

Description

@pierrick-fonquerne

Goal

Continuously exercise every untrusted parsing boundary with coverage-guided fuzzing and preserve discovered crashes as deterministic regressions.

Initial targets

  • flagd ruleset and JsonLogic parsing/round-trip
  • incremental SSE decoding
  • ETag and HTTP precondition parsing
  • SDK key and bearer credential parsing
  • client snapshot parsing
  • OFREP request contexts and bulk payloads

Acceptance criteria

  • A standalone fuzz/ workspace uses a pinned cargo-fuzz/libFuzzer toolchain.
  • Pull requests run a short bounded corpus without secrets or write permissions.
  • Scheduled runs give each target a documented time and input-size budget.
  • Parser targets assert semantic invariants such as successful parse → canonical serialize → successful equivalent reparse.
  • Input-size caps prevent the fuzzer itself from turning into an unbounded CI workload.
  • Crashes are minimized and converted into committed corpus entries or deterministic regression tests.
  • Corpus and crash artifacts never contain credentials, production snapshots, or user evaluation contexts.
  • CI logs identify the target, seed and reproduction command.
  • Fuzzing failures block merge once the initial corpus is stable.

Activity

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

    kind:choreTooling, CI, dependencies, repository layoutphase:clientOpenFeature in-process providerphase:evalRuleset evaluation engine of flaps-evalphase:serverAdmin API, OFREP, sync and SSE

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions