Releases: thepudds/fzgo
Releases · thepudds/fzgo
Auto generate fuzzers from normal non-fuzz functions
- Auto generate fuzzers from normal non-fuzz functions via
genfuzzfuncs
, an optional experimental utility not part of #19109 proposal. (This has been available for a while, but this is the first tagged release with this). - For rich signatures, a new string encoding to work better with sonar.
- Allow multiple package arguments on the fzgo command line to allow fuzzing more than one package at a time.
- To ease experimentation,
FZGOFLAGSBUILD
andFZGOFLAGSFUZZ
environmental variables can optionally contain a space-separated list of arguments to pass togo-fuzz-build
andgo-fuzz
, respectively.
Allow multiple input corpus locations, change default destination corpus
- The default destination corpus location is now
GOPATH/pkg/fuzz/corpus/...
if you do not specify-fuzzdir
. - If you specify
-fuzzdir=testdata
, the destination corpus is<pkg-path>/testdata/fuzz/<func>/corpus
(which was the default destination prior to this release). fzgo
now uses multiple input corpus from any of the locations it knows about.- See comment in PR #7 for details.
Support fuzzing rich signatures beyond Fuzz(data []byte)
- Add support for fuzzing rich signatures, such as:
func FuzzFunc(re string, input []byte, posix bool) (bool, error)
- Directly manage randomness for rich signatures, which also enables literal injection. This allows examples like this to be guessed within a few seconds of fuzzing:
func FuzzHardToGuessNumber(guessMe int64) {
if guessMe == 0x123456789 {
panic("bingo")
}
}
Use corpus as deterministic unit tests when not fuzzing
If running fzgo test <pkg>
, the normal go test <pkg>
behavior occurs to test <pkg>
, but now any corpus for <pkg>
is also automatically used as input for an additional set of deterministic unit tests. No new random inputs are created in this scenario so that normal testing remains deterministic.
Initial tagged release
Includes:
- the initial set of functionality first published in Jan 2019.
- some follow-on work, such as support for multiple fuzz targets at same time.