mirror of
https://github.com/coredns/coredns.git
synced 2025-10-27 08:14:18 -04:00
fuzzing: allow setup function to be called (#3175)
This allows to fuzzing of more interesting targets that require setup. Signed-off-by: Miek Gieben <miek@miek.nl>
This commit is contained in:
@@ -11,7 +11,12 @@ import (
|
||||
)
|
||||
|
||||
// Do will fuzz p - used by gofuzz. See Makefile.fuzz for comments and context.
|
||||
func Do(p plugin.Handler, data []byte) int {
|
||||
func Do(p plugin.Handler, fn SetupFunc, data []byte) int {
|
||||
if fn != nil {
|
||||
if err := fn(); err != nil {
|
||||
panic("fuzz: " + err.Error())
|
||||
}
|
||||
}
|
||||
ctx := context.TODO()
|
||||
r := new(dns.Msg)
|
||||
if err := r.Unpack(data); err != nil {
|
||||
|
||||
10
plugin/pkg/fuzz/setup.go
Normal file
10
plugin/pkg/fuzz/setup.go
Normal file
@@ -0,0 +1,10 @@
|
||||
package fuzz
|
||||
|
||||
// SetupFunc can be given to Do to perform a one time setup of the fuzzing
|
||||
// environment. This function is called on every fuzz, it is your
|
||||
// responsibility to make it idempotent. If SetupFunc returns an error, panic
|
||||
// is called with that error.
|
||||
//
|
||||
// There isn't a ShutdownFunc, because fuzzing is supposed to be run for a long
|
||||
// time and there isn't any hook to call it from.
|
||||
type SetupFunc func() error
|
||||
Reference in New Issue
Block a user