diff options
-rw-r--r-- | Makefile | 27 | ||||
-rw-r--r-- | Makefile.fuzz | 18 | ||||
-rw-r--r-- | plugin/pkg/fuzz/do.go | 2 |
3 files changed, 24 insertions, 23 deletions
@@ -47,22 +47,17 @@ endif ifeq ($(TEST_TYPE),fuzzit) # skip fuzzing for PR if [ "$(TRAVIS_PULL_REQUEST)" = "false" ] || [ "$(FUZZIT_TYPE)" = "local-regression" ] ; then \ - export GO111MODULE=off; \ - go get -u github.com/dvyukov/go-fuzz/go-fuzz-build; \ - go get -u -v .; \ - cd ../../go-acme/lego; \ - git checkout v2.5.0; \ - cd ../../coredns/coredns; \ - LIBFUZZER=YES make -f Makefile.fuzz cache chaos file rewrite whoami corefile; \ - wget -O fuzzit https://github.com/fuzzitdev/fuzzit/releases/download/v2.4.27/fuzzit_Linux_x86_64; \ - chmod a+x fuzzit; \ - ./fuzzit create job --type $(FUZZIT_TYPE) coredns/cache ./cache; \ - ./fuzzit create job --type $(FUZZIT_TYPE) coredns/chaos ./chaos; \ - ./fuzzit create job --type $(FUZZIT_TYPE) coredns/file ./file; \ - ./fuzzit create job --type $(FUZZIT_TYPE) coredns/rewrite ./rewrite; \ - ./fuzzit create job --type $(FUZZIT_TYPE) coredns/whoami ./whoami; \ - ./fuzzit create job --type $(FUZZIT_TYPE) coredns/corefile ./corefile; \ - fi; + export GO111MODULE=off; \ + go get -u github.com/dvyukov/go-fuzz/go-fuzz-build; \ + go get -u -v .; \ + cd ../../go-acme/lego && git checkout v2.5.0; \ + cd ../../coredns/coredns; \ + LIBFUZZER=YES $(MAKE) -f Makefile.fuzz all; \ + $(MAKE) -sf Makefile.fuzz fuzzit; \ + for i in `$(MAKE) -sf Makefile.fuzz echo`; do echo $$i; \ + ./fuzzit create job --type $(FUZZIT_TYPE) coredns/$$i ./$$i; \ + done; \ + fi; endif core/plugin/zplugin.go core/dnsserver/zdirectives.go: plugin.cfg diff --git a/Makefile.fuzz b/Makefile.fuzz index b2340c420..4d5189720 100644 --- a/Makefile.fuzz +++ b/Makefile.fuzz @@ -1,5 +1,7 @@ # Makefile for fuzzing # +# With https://app.fuzzit.dev/ we are continuously fuzzing CoreDNS. +# # 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. @@ -9,11 +11,13 @@ # 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 +# Installing go-fuzz is very tricky because it does not support Go modules, see the `Makefile` +# for the current trickery. The following may do the trick: +# +# GO111MODULE=off go get github.com/dvyukov/go-fuzz/go-fuzz-build REPO:="github.com/coredns/coredns" +FUZZIT:=v2.4.28 # set LIBFUZZER=YES to build libfuzzer compatible targets FUZZ:=$(dir $(wildcard plugin/*/fuzz.go)) # plugin/cache/ @@ -22,7 +26,9 @@ PLUGINS:=$(foreach f,$(PLUGINS),$(subst /, ,$(f))) # > cache .PHONY: echo echo: - @echo fuzz targets: $(PLUGINS) + @echo $(PLUGINS) corefile + +all: $(PLUGINS) corefile .PHONY: $(PLUGINS) $(PLUGINS): echo @@ -34,7 +40,6 @@ else go-fuzz -bin=./$(@)-fuzz.zip -workdir=fuzz/$(@) endif - .PHONY: corefile corefile: ifeq ($(LIBFUZZER), YES) @@ -45,7 +50,8 @@ else go-fuzz -bin=./test-fuzz.zip -workdir=fuzz/$(@) endif - +fuzzit: + wget -O fuzzit https://github.com/fuzzitdev/fuzzit/releases/download/$(FUZZIT)/fuzzit_Linux_x86_64 && chmod +x fuzzit .PHONY: clean clean: diff --git a/plugin/pkg/fuzz/do.go b/plugin/pkg/fuzz/do.go index dfb046b25..e2bc0edee 100644 --- a/plugin/pkg/fuzz/do.go +++ b/plugin/pkg/fuzz/do.go @@ -10,7 +10,7 @@ import ( "github.com/miekg/dns" ) -// Do will fuzz p - used by gofuzz. See Maefile.fuzz for comments and context. +// Do will fuzz p - used by gofuzz. See Makefile.fuzz for comments and context. func Do(p plugin.Handler, data []byte) int { ctx := context.TODO() ret := 1 |