Add OSS-Fuzz integration with 10 fuzz targets #1768
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
This PR adds comprehensive OSS-Fuzz integration to pdf-lib, enabling continuous fuzzing through Google's infrastructure.
Fuzz Targets (10 total)
pdf_parserPDFDocument.load()pdf_modifypdf_formjpeg_embedpng_embedstream_decodeobject_parserpdf_stringxref_streampage_embedFiles Added
fuzz/*.fuzz.ts- 10 TypeScript fuzz targetsfuzz/*.options- Fuzzer resource limits (max_len, timeout)fuzz/corpus/- Seed corpora with valid and edge-case inputsfuzz/dictionaries/- PDF, JPEG, PNG dictionaries for guided fuzzingfuzz/README.md- Documentation and usage instructionsoss-fuzz/- OSS-Fuzz configuration (Dockerfile, build.sh, project.yaml).github/workflows/fuzz.yml- CI workflow for regression testingLocal Testing
Coverage
Current test suite achieves 87.56% line coverage and 98.55% parser coverage. These fuzz targets provide additional coverage through randomized input generation.
OSS-Fuzz Integration
A companion PR will be submitted to google/oss-fuzz with the project configuration files after this PR is merged.
This work prepares pdf-lib for inclusion in Google's OSS-Fuzz continuous fuzzing infrastructure, helping identify potential parsing bugs and edge cases.