walkers: writing some bytes
Signed-off-by: Vincent Batts <vbatts@hashbangbash.com>
This commit is contained in:
parent
ae652ba149
commit
ae102a788a
7 changed files with 659 additions and 1 deletions
|
@ -1,17 +1,59 @@
|
|||
package writeBytesFuzz
|
||||
|
||||
import (
|
||||
"crypto/rand"
|
||||
"fmt"
|
||||
"os"
|
||||
|
||||
"git.thisco.de/vbatts/fuzz-walker/walker"
|
||||
"github.com/hashicorp/errwrap"
|
||||
)
|
||||
|
||||
func init() {
|
||||
walker.RegisterFuzzFunc(Name, FuzzFunc)
|
||||
// malloc early
|
||||
for _, size := range sizes {
|
||||
bufs[size] = make([]byte, size)
|
||||
}
|
||||
}
|
||||
|
||||
var bufs = map[int][]byte{}
|
||||
var sizes = []int{1, 9, 33, 65, 129, 257} // going with common int sizes + 1
|
||||
var randomized = false
|
||||
|
||||
// this need only be run once
|
||||
func randomize(b map[int][]byte) error {
|
||||
for size := range b {
|
||||
_, err := rand.Read(b[size])
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
const Name = "writeBytesFuzz"
|
||||
|
||||
func FuzzFunc(path string, info os.FileInfo) error {
|
||||
if !info.Mode().IsRegular() {
|
||||
return nil
|
||||
}
|
||||
if !randomized {
|
||||
if err := randomize(bufs); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
fd, err := os.OpenFile(path, os.O_WRONLY, os.ModePerm)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer fd.Close()
|
||||
|
||||
for size, buf := range bufs {
|
||||
_, err := fd.Write(buf)
|
||||
if err != nil {
|
||||
return errwrap.Wrapf(fmt.Sprintf("failed writing %d random bytes to %q: {{err}}", size, path), err)
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
|
|
@ -13,5 +13,8 @@ func init() {
|
|||
const Name = "writeNumFuzz"
|
||||
|
||||
func FuzzFunc(path string, info os.FileInfo) error {
|
||||
if !info.Mode().IsRegular() {
|
||||
return nil
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue