aboutsummaryrefslogtreecommitdiff
path: root/Makefile.fuzz
diff options
context:
space:
mode:
Diffstat (limited to 'Makefile.fuzz')
-rw-r--r--Makefile.fuzz33
1 files changed, 33 insertions, 0 deletions
diff --git a/Makefile.fuzz b/Makefile.fuzz
new file mode 100644
index 000000000..46358246b
--- /dev/null
+++ b/Makefile.fuzz
@@ -0,0 +1,33 @@
+# Makefile for fuzzing
+#
+# Use go-fuzz and needs the tools installed. For each fuzz.go in a plugin's directory
+# you can start the fuzzing with: make -f Makefile.fuzz <plugin>
+# e.g.
+#
+# make -f Makefile.fuzz proxy
+#
+# Each plugin that wants to join the fuzzing fray only needs to add a fuzz.go that calls
+# the plugins's ServeDNS and used the plugin/pkg/fuzz for the Do function.
+#
+# Installing go-fuzz
+#$ go get github.com/dvyukov/go-fuzz/go-fuzz
+#$ go get github.com/dvyukov/go-fuzz/go-fuzz-build
+
+REPO:="github.com/coredns/coredns/plugin"
+
+FUZZ:=$(dir $(wildcard plugin/*/fuzz.go)) # plugin/cache/
+PLUGINS:=$(foreach f,$(FUZZ),$(subst plugin, ,$(f:/=))) # > /cache
+PLUGINS:=$(foreach f,$(PLUGINS),$(subst /, ,$(f))) # > cache
+
+.PHONY: echo
+echo:
+ @echo fuzz targets: $(PLUGINS)
+
+.PHONY: $(PLUGINS)
+$(PLUGINS): echo
+ go-fuzz-build $(REPO)/$(@)
+ go-fuzz -bin=./$(@)-fuzz.zip -workdir=fuzz/$(@)
+
+.PHONY: clean
+clean:
+ rm *-fuzz.zip