Added fuzzing code and readme.md to explain

This commit is contained in:
Ashley Svetlik 2019-06-13 11:11:47 -05:00
parent f09c3ebf7c
commit 4039583ccd
2 changed files with 42 additions and 0 deletions

30
roaring/README.md Normal file
View file

@ -0,0 +1,30 @@
# The Fuzzer
For complete documentation on go-fuzz, please see: https://github.com/dvyukov/go-fuzz
The fuzzer in relation to the roaring package checks the `Bitmap.UnmarshalBinary` function found in `roaring.go`. In order to use the fuzzer, you can follow these steps:
`cd $GOPATH/src/github.com/pilosa/pilosa/roaring`
`go-fuzz-build ./`
You must now make the workdir/corpus directory. This is achieved by:
`mkdir workdir/corpus`
The fuzzer needs some input to start the fuzzing with. Copy some sample fragments into the workdir/corpus folder. Once you have copied your sample inputs, you are ready to run the fuzzer:
`go-fuzz`
## Understanding the Fuzzer Output
The fuzzer will output something similar to the follwoing:
`2015/04/25 12:39:53 workers: 8, corpus: 124 (12s ago), crashers: 37, restarts: 1/15, execs: 35342 (2941/sec), cover: 403, uptime: 12s`
The most important part of the output is the `crashers` and `cover`. The crashers records how many combinations were discovered that fail and the cover tells you how much code is being accessed.
For a complete explanation of the output, please see: https://github.com/dvyukov/go-fuzz.
The fuzzer will document the crashers in a folder labeled "crashers." It will record the fragment and the error that was produced in two separate files within this folder. This is the final product.
Happy Fuzzing!

12
roaring/fuzzer.go Normal file
View file

@ -0,0 +1,12 @@
// +build gofuzz
package roaring
func FuzzBitmapUnmarshalBinary(data []byte) int {
b := NewBitmap()
err := b.UnmarshalBinary(data)
if err != nil {
return 0
}
return 1
}