| 
									
										
										
										
											2017-09-29 22:28:13 +01:00
										 |  |  | # 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
 | 
					
						
							| 
									
										
										
										
											2018-12-17 07:49:15 +00:00
										 |  |  | #
 | 
					
						
							| 
									
										
										
										
											2017-09-29 22:28:13 +01:00
										 |  |  | # 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
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-12-17 07:49:15 +00:00
										 |  |  | REPO:="github.com/coredns/coredns" | 
					
						
							| 
									
										
										
										
											2017-09-29 22:28:13 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | 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 | 
					
						
							| 
									
										
										
										
											2018-12-17 07:49:15 +00:00
										 |  |  | 	go-fuzz-build -tags fuzz $(REPO)/plugin/$(@) | 
					
						
							| 
									
										
										
										
											2017-09-29 22:28:13 +01:00
										 |  |  | 	go-fuzz -bin=./$(@)-fuzz.zip -workdir=fuzz/$(@) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-12-17 07:49:15 +00:00
										 |  |  | .PHONY: corefile | 
					
						
							|  |  |  | corefile: | 
					
						
							|  |  |  | 	go-fuzz-build -tags fuzz $(REPO)/test | 
					
						
							|  |  |  | 	go-fuzz -bin=./test-fuzz.zip -workdir=fuzz/$(@) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-09-29 22:28:13 +01:00
										 |  |  | .PHONY: clean | 
					
						
							|  |  |  | clean: | 
					
						
							|  |  |  | 	rm *-fuzz.zip |