ci: integrate with OSS-Fuzz for continuous distributed fuzzing
Nobody has claimed this yet.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 35/100
Research direction
Start with the OSS-Fuzz Rust new-project guide and review the existing fuzz targets: fuzz_parse_eager, fuzz_parse_lazy, fuzz_depth, and fuzz_ffi_ops. Prepare projects/qjson/ in google/oss-fuzz with its Dockerfile and project.yaml, then submit the PR. Done means all four targets run successfully, the project is approved, and the first OSS-Fuzz run completes with maintainer dashboard access.
Written by the indexing model from the issue text.
Description
Background
qjson currently runs timed fuzzing weekly (60 seconds per target), which is sufficient for corpus regression but insufficient for discovering deep bugs. OSS-Fuzz provides free continuous distributed fuzzing for open-source projects, running thousands of CPU hours daily.
Production JSON parsers like simdjson and serde_json have found multiple security-relevant bugs through OSS-Fuzz that local fuzzing would never discover.
Goal
Integrate qjson with Google's OSS-Fuzz for continuous, large-scale fuzz testing.
Why OSS-Fuzz
| Aspect | Current (local timed fuzz) | OSS-Fuzz |
|---|---|---|
| Runtime | 60s/target weekly | Continuous, thousands of CPU-hours/day |
| Hardware | 1 GitHub runner | Google distributed cluster |
| Coverage depth | Shallow exploration | Deep path discovery |
| Corpus | Manual maintenance | Auto-accumulated, cross-version |
| Cost | Free | Free (Google-sponsored) |
Scope
Integration Steps
- Create
projects/qjson/ingoogle/oss-fuzzrepository - Write
Dockerfileto build qjson fuzz targets - Write
project.yamlwith project metadata - Adapt existing fuzz targets (
fuzz_parse_eager,fuzz_parse_lazy,fuzz_depth,fuzz_ffi_ops) - Submit PR to
google/oss-fuzz, await approval (typically 1-2 weeks)
Requirements for Acceptance
- Open-source with OSI-approved license (Apache-2.0 ✓)
- Active maintenance ✓
- Real user base (API7/APISIX ecosystem ✓)
- Commitment to fix reported vulnerabilities within 90-day disclosure deadline
Acceptance Criteria
- PR submitted to
google/oss-fuzzrepository - All 4 existing fuzz targets integrated
- Project approved and running on OSS-Fuzz infrastructure
- ClusterFuzz dashboard accessible to maintainers
- First fuzzing run completes successfully
References
- OSS-Fuzz: https://github.com/google/oss-fuzz
- New project guide: https://google.github.io/oss-fuzz/getting-started/new-project-guide/
- Rust integration: https://google.github.io/oss-fuzz/getting-started/new-project-guide/rust-lang/
- Example Rust project: https://github.com/google/oss-fuzz/tree/master/projects/serde_json
- Dominant language
- Rust
- Stars
- 2
- Forks
- 0
- PR merge metrics
- No merged PRs in 30d
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from api7/lua-qjson
-
Difficulty 1/5 Under an hour Newbie friendliness 90/100
-
enhancement
Difficulty 5/5 Over a week Newbie friendliness 30/100
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
-
state:needs triage
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
zed-industries/zed#64680 · 2 comments ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
RustPython/RustPython#8802 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
TheLarkInn/aipm#2390 ·