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.
Though process
First tried to implement a "real" fuzzing test with
@jazzer.js/core
and@jazzer.js/jest-runner
(see Notes).Things were not working out as expected, so I came up with a working solution (see Solution).
Notes
.cifuzz-corpus/fuzz.test/importFrom/
, and crashes are located intests/fuzzing/fuzz.test/importFrom/
new FuzzedDataProvider(buffer).consumeString()
method seems more performant thanbuffer.toString()
(~15%) (in the standalone version, in Jest it's the opposite)Solution
Based on the above observations (difficulty, if not impossibility, to implement fuzzing libraries for ESM packages) and choices made by ossf/scorecard, the "fuzzing" process is using the
fast-check
library (or more specifically its@fast-check/ava
test runner integration).Side notes
While working on this issue, I noticed
ossf/scorecard
didn't detectfast-check
test runners integrations correctly, so I've opened issue ossf/scorecard#3567 and submitted PR ossf/scorecard#3568 to fix that.In the meantime, I've added a "hack" import so
fast-check
gets detected correctly byossf/scorecard
.