* Fuzz: fix forward build Signed-off-by: Miek Gieben <miek@miek.nl> * Flag not released yet, wget quiet Signed-off-by: Miek Gieben <miek@miek.nl>
58 lines
1.7 KiB
Text
58 lines
1.7 KiB
Text
# 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.
|
|
#
|
|
# make -f Makefile.fuzz forward
|
|
#
|
|
# Each plugin that wants to join the fuzzing fray only needs to add a fuzz.go that calls
|
|
# the plugin's ServeDNS and used the plugin/pkg/fuzz for the Do function.
|
|
#
|
|
# 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.35
|
|
# set LIBFUZZER=YES to build libfuzzer compatible targets
|
|
|
|
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 $(PLUGINS) corefile
|
|
|
|
all: $(PLUGINS) corefile
|
|
|
|
.PHONY: $(PLUGINS)
|
|
$(PLUGINS): echo
|
|
ifeq ($(LIBFUZZER), YES)
|
|
go-fuzz-build -libfuzzer -o $(@).a ./plugin/$(@)
|
|
clang -fsanitize=fuzzer $(@).a -o $(@)
|
|
else
|
|
go-fuzz-build $(REPO)/plugin/$(@)
|
|
go-fuzz -bin=./$(@)-fuzz.zip -workdir=fuzz/$(@)
|
|
endif
|
|
|
|
.PHONY: corefile
|
|
corefile:
|
|
ifeq ($(LIBFUZZER), YES)
|
|
go-fuzz-build -libfuzzer -o $(@).a ./test
|
|
clang -fsanitize=fuzzer $(@).a -o $(@)
|
|
else
|
|
go-fuzz-build $(REPO)/test
|
|
go-fuzz -bin=./test-fuzz.zip -workdir=fuzz/$(@)
|
|
endif
|
|
|
|
fuzzit:
|
|
wget --quiet -O fuzzit https://github.com/fuzzitdev/fuzzit/releases/download/$(FUZZIT)/fuzzit_Linux_x86_64 && chmod +x fuzzit
|
|
|
|
.PHONY: clean
|
|
clean:
|
|
rm *-fuzz.zip
|