aboutsummaryrefslogtreecommitdiff
path: root/plugin/forward/fuzz.go
diff options
context:
space:
mode:
authorGravatar Miek Gieben <miek@miek.nl> 2019-08-25 19:00:59 +0000
committerGravatar GitHub <noreply@github.com> 2019-08-25 19:00:59 +0000
commit793bd324999ed301a7437931213dbbb2d766558f (patch)
tree83adf2d61824b626692b8ae088e5b7182eb3e1f2 /plugin/forward/fuzz.go
parent01ccbbb12deb35a84c94b646131f43709a51bfef (diff)
downloadcoredns-793bd324999ed301a7437931213dbbb2d766558f.tar.gz
coredns-793bd324999ed301a7437931213dbbb2d766558f.tar.zst
coredns-793bd324999ed301a7437931213dbbb2d766558f.zip
plugin/forward: add fuzzing (#3188)
* plugin/forward: add fuzzing Add fuzz.go for forward Signed-off-by: Miek Gieben <miek@miek.nl> * Make it compile Signed-off-by: Miek Gieben <miek@miek.nl>
Diffstat (limited to 'plugin/forward/fuzz.go')
-rw-r--r--plugin/forward/fuzz.go34
1 files changed, 34 insertions, 0 deletions
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)
+}