mirror of
				https://github.com/coredns/coredns.git
				synced 2025-10-27 08:14:18 -04:00 
			
		
		
		
	* 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>
		
			
				
	
	
		
			59 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Makefile
		
	
	
	
	
	
			
		
		
	
	
			59 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Makefile
		
	
	
	
	
	
| # 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
 |