From 793bd324999ed301a7437931213dbbb2d766558f Mon Sep 17 00:00:00 2001 From: Miek Gieben Date: Sun, 25 Aug 2019 19:00:59 +0000 Subject: [PATCH] plugin/forward: add fuzzing (#3188) * plugin/forward: add fuzzing Add fuzz.go for forward Signed-off-by: Miek Gieben * Make it compile Signed-off-by: Miek Gieben --- plugin/forward/fuzz.go | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 plugin/forward/fuzz.go diff --git a/plugin/forward/fuzz.go b/plugin/forward/fuzz.go new file mode 100644 index 000000000..eb4f78246 --- /dev/null +++ b/plugin/forward/fuzz.go @@ -0,0 +1,34 @@ +// +build gofuzz + +package forward + +import ( + "github.com/coredns/coredns/plugin/pkg/dnstest" + "github.com/coredns/coredns/plugin/pkg/fuzz" + + "github.com/miekg/dns" +) + +var f *Forward + +// abuse init to setup a environment to test against. This start another server to that will +// reflect responses. +func init() { + f = New() + s := dnstest.NewServer(r{}.reflectHandler) + f.proxies = append(f.proxies, NewProxy(s.Addr, "tcp")) + f.proxies = append(f.proxies, NewProxy(s.Addr, "udp")) +} + +// Fuzz fuzzes forward. +func Fuzz(data []byte) int { + return fuzz.Do(f, nil, data) +} + +type r struct{} + +func (r r) reflectHandler(w dns.ResponseWriter, req *dns.Msg) { + m := new(dns.Msg) + m.SetReply(req) + w.WriteMsg(m) +}