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.
This PR adds a single-threaded dumb fuzzer for pdf-reader.
A test run through all the documents in
spec/data
generated 14,232 errors and took approximately 85 minutes to complete on a single core.It's worth noting that the errors included 274 instances of
execution expired
indicating that 274 tests caused pdf-reader to hang for 15 seconds before being forcibly terminated. This accounts for more than 65 minutes of the run.The fuzz duration could be decreased significantly by decreasing the timeout or resolving the underlying issue(s) in pdf-reader.
Usage
Multiple input files are supported:
./fuzz.rb <FILE1> [FILE2] [FILE3] [...]
If your shell supports file globbing:
./tools/fuzz.rb spec/data/**.pdf
Output
Each test case is written to 'fuzz.pdf' in the current working directory.
Crashes and the associated backtrace are saved in the 'crashes' directory in the current working directory.
Analysis
For working with the crashes, I typically use: