Add comprehensive OSS-Fuzz integration with 19 fuzzers#81
Open
skypher wants to merge 2 commits intoArtifexSoftware:masterfrom
Open
Add comprehensive OSS-Fuzz integration with 19 fuzzers#81skypher wants to merge 2 commits intoArtifexSoftware:masterfrom
skypher wants to merge 2 commits intoArtifexSoftware:masterfrom
Conversation
This adds a complete fuzzing infrastructure targeting all major MuPDF attack surfaces for integration with Google's OSS-Fuzz continuous fuzzing service. Fuzzers added: - Document formats: fuzz_image, fuzz_svg, fuzz_xps, fuzz_epub, fuzz_cbz, fuzz_html - Parsers: fuzz_xml, fuzz_html5, fuzz_json - PDF subsystems: fuzz_pdf_lexer, fuzz_pdf_object, fuzz_pdf_stream, fuzz_cmap, fuzz_stext - Resources: fuzz_font, fuzz_colorspace, fuzz_archive, fuzz_filter, fuzz_path Also includes: - 11 format-specific dictionaries for mutation guidance - Seed corpus with minimal valid files for each format - Support for libfuzzer, AFL++, and honggfuzz engines - Compatible with ASan, MSan, and UBSan sanitizers Tested with OSS-Fuzz infrastructure locally - all fuzzers pass check_build.
- Fix OOM risk in fuzz_image.c by checking image dimensions before decoding (MAX_IMAGE_DIM = 8192) - Add fuzz/build.sh for OSS-Fuzz build orchestration - Add fuzz/Makefile for local fuzzer development and testing - Apply AGPL license headers to all 19 fuzzer source files - Enhance fuzz_path.c to exercise rasterizer (fill/stroke paths)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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 a complete fuzzing infrastructure for integration with Google's OSS-Fuzz continuous fuzzing service, targeting all major MuPDF attack surfaces.
Fuzzers Added (19 total)
fuzz_image,fuzz_svg,fuzz_xps,fuzz_epub,fuzz_cbz,fuzz_htmlfuzz_xml,fuzz_html5,fuzz_jsonfuzz_pdf_lexer,fuzz_pdf_object,fuzz_pdf_stream,fuzz_cmap,fuzz_stextfuzz_font,fuzz_colorspace,fuzz_archive,fuzz_filter,fuzz_pathAlso Includes
Testing
check_buildpasses for all 20 fuzzers)fuzz_imageincludes OOM protection (MAX_IMAGE_DIM check)fuzz_pathexercises both path construction and rasterizationFiles
Next Steps
After this merges, a corresponding PR will be submitted to google/oss-fuzz with the build integration (
Dockerfile,project.yaml).