aboutsummaryrefslogtreecommitdiff
path: root/plugin/file/fuzz.go
diff options
context:
space:
mode:
authorGravatar Miek Gieben <miek@miek.nl> 2017-09-29 22:28:13 +0100
committerGravatar GitHub <noreply@github.com> 2017-09-29 22:28:13 +0100
commit4276d29b81575992bf0c7525b4cb5716d493e913 (patch)
tree152994cf7cb251f9f46cb8c3b914cb413eda33de /plugin/file/fuzz.go
parent23526aec1d933b6362c80eaa084749a794d43aca (diff)
downloadcoredns-4276d29b81575992bf0c7525b4cb5716d493e913.tar.gz
coredns-4276d29b81575992bf0c7525b4cb5716d493e913.tar.zst
coredns-4276d29b81575992bf0c7525b4cb5716d493e913.zip
Add fuzzing infrastructure (#1118)
Fix file/fuzz.go build and docs in Makefile.fuzz Each plugin can add a fuzz.go to join the fuzzing craze. pkg/fuzz/do.go could be made a lot smarter, but is probably good enough for starters. $ make -f Makefile.fuzz <plugin> will build with go-fuzz-build and then execute a go-fuzz run. Each plugin's fuzz run uses a per-plugin directory to store the fuzz data.
Diffstat (limited to 'plugin/file/fuzz.go')
-rw-r--r--plugin/file/fuzz.go48
1 files changed, 48 insertions, 0 deletions
diff --git a/plugin/file/fuzz.go b/plugin/file/fuzz.go
new file mode 100644
index 000000000..6be92fb70
--- /dev/null
+++ b/plugin/file/fuzz.go
@@ -0,0 +1,48 @@
+package file
+
+import (
+ "strings"
+
+ "github.com/coredns/coredns/plugin/pkg/fuzz"
+ "github.com/coredns/coredns/plugin/test"
+)
+
+// Fuzz fuzzes file.
+func Fuzz(data []byte) int {
+ name := "miek.nl."
+ zone, _ := Parse(strings.NewReader(fuzzMiekNL), name, "stdin", 0)
+ f := File{Next: test.ErrorHandler(), Zones: Zones{Z: map[string]*Zone{name: zone}, Names: []string{name}}}
+
+ return fuzz.Do(f, data)
+}
+
+const fuzzMiekNL = `
+$TTL 30M
+$ORIGIN miek.nl.
+@ IN SOA linode.atoom.net. miek.miek.nl. (
+ 1282630057 ; Serial
+ 4H ; Refresh
+ 1H ; Retry
+ 7D ; Expire
+ 4H ) ; Negative Cache TTL
+ IN NS linode.atoom.net.
+ IN NS ns-ext.nlnetlabs.nl.
+ IN NS omval.tednet.nl.
+ IN NS ext.ns.whyscream.net.
+
+ IN MX 1 aspmx.l.google.com.
+ IN MX 5 alt1.aspmx.l.google.com.
+ IN MX 5 alt2.aspmx.l.google.com.
+ IN MX 10 aspmx2.googlemail.com.
+ IN MX 10 aspmx3.googlemail.com.
+
+ IN A 139.162.196.78
+ IN AAAA 2a01:7e00::f03c:91ff:fef1:6735
+
+a IN A 139.162.196.78
+ IN AAAA 2a01:7e00::f03c:91ff:fef1:6735
+www IN CNAME a
+archive IN CNAME a
+
+srv IN SRV 10 10 8080 a.miek.nl.
+mx IN MX 10 a.miek.nl.`