# 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 # 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" 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 -tags fuzz $(REPO)/plugin/$(@) go-fuzz -bin=./$(@)-fuzz.zip -workdir=fuzz/$(@) .PHONY: corefile corefile: go-fuzz-build -tags fuzz $(REPO)/test go-fuzz -bin=./test-fuzz.zip -workdir=fuzz/$(@) .PHONY: clean clean: rm *-fuzz.zip