@@ -5,6 +5,9 @@ CORPUS_DIR = $(FUZZ_DIR)/corpus
55RESULTS_DIR = $(FUZZ_DIR)/results
66TOOLS = filterdiff interdiff rediff grepdiff lsdiff
77
8+ # Allow overriding binary directory (for instrumented builds)
9+ FUZZ_BINDIR ?= src
10+
811.PHONY: fuzz-help fuzz-corpus fuzz-clean fuzz-test fuzz-all fuzz-analyze
912.PHONY: $(addprefix fuzz-, $(TOOLS))
1013
@@ -29,6 +32,9 @@ fuzz-help:
2932 @echo " - AFL++ installed (american-fuzzy-lop package)"
3033 @echo " - Tools built (run 'make' first)"
3134 @echo ""
35+ @echo "For best results (instrumented binaries):"
36+ @echo " ./configure --enable-fuzzing && make"
37+ @echo ""
3238 @echo "Quick start: make fuzz-corpus && make fuzz-test"
3339
3440# Generate or update the fuzzing corpus
@@ -45,10 +51,15 @@ fuzz-corpus: $(FUZZ_DIR)/generate_corpus.sh
4551 @echo "Corpus ready: $$(ls -1 $(CORPUS_DIR) | wc -l) files"
4652
4753# Quick fuzzing test (60 seconds)
48- fuzz-test: fuzz-corpus src /filterdiff
54+ fuzz-test: fuzz-corpus $(FUZZ_BINDIR) /filterdiff
4955 @echo "Running quick fuzz test (60 seconds)..."
5056 @echo "This will test basic fuzzing functionality"
51- timeout 60s $(FUZZ_DIR)/run_fuzz.sh filterdiff || true
57+ @if [ -f "$(FUZZ_BINDIR)/fuzz-filterdiff" ]; then \
58+ echo "Using instrumented binary: $(FUZZ_BINDIR)/fuzz-filterdiff"; \
59+ else \
60+ echo "Warning: Using non-instrumented binary: $(FUZZ_BINDIR)/filterdiff"; \
61+ fi
62+ FUZZ_BINDIR="$(FUZZ_BINDIR)" timeout 60s $(FUZZ_DIR)/run_fuzz.sh filterdiff || true
5263 @echo ""
5364 @echo "Quick test completed. Check fuzz/results/filterdiff/ for results"
5465 @if [ -d "$(RESULTS_DIR)/filterdiff/crashes" ] && [ -n "$$(ls -A $(RESULTS_DIR)/filterdiff/crashes 2>/dev/null)" ]; then \
@@ -58,43 +69,43 @@ fuzz-test: fuzz-corpus src/filterdiff
5869 fi
5970
6071# Extended fuzzing on all tools (runs in background)
61- fuzz-all: fuzz-corpus $(addprefix src/, $(TOOLS))
72+ fuzz-all: fuzz-corpus
6273 @echo "Starting extended fuzzing on all tools..."
6374 @echo "This will run fuzzing sessions in the background"
6475 @echo "Monitor with: ps aux | grep afl-fuzz"
6576 @echo "Stop with: pkill afl-fuzz"
6677 @echo ""
6778 @for tool in $(TOOLS); do \
68- if [ -f "src/ $$tool" ]; then \
79+ if [ -f "$(FUZZ_BINDIR)/$$tool" ] || [ -f "$(FUZZ_BINDIR)/fuzz- $$tool" ]; then \
6980 echo "Starting $$tool fuzzing in background..."; \
70- nohup $(FUZZ_DIR)/run_fuzz.sh $$tool > $(RESULTS_DIR)/$$tool.log 2>&1 & \
81+ FUZZ_BINDIR="$(FUZZ_BINDIR)" nohup $(FUZZ_DIR)/run_fuzz.sh $$tool > $(RESULTS_DIR)/$$tool.log 2>&1 & \
7182 sleep 2; \
7283 fi; \
7384 done
7485 @echo ""
7586 @echo "All fuzzing sessions started. Logs in $(RESULTS_DIR)/*.log"
7687 @echo "Run 'make fuzz-analyze' periodically to check for crashes"
7788
78- # Individual tool fuzzing targets
79- fuzz-filterdiff: fuzz-corpus src/filterdiff
89+ # Individual tool fuzzing targets - depend on instrumented binaries when available
90+ fuzz-filterdiff: fuzz-corpus
8091 @echo "Starting filterdiff fuzzing (interactive)..."
81- $(FUZZ_DIR)/run_fuzz.sh filterdiff
92+ FUZZ_BINDIR="$(FUZZ_BINDIR)" $(FUZZ_DIR)/run_fuzz.sh filterdiff
8293
83- fuzz-interdiff: fuzz-corpus src/interdiff
94+ fuzz-interdiff: fuzz-corpus
8495 @echo "Starting interdiff fuzzing (interactive)..."
85- $(FUZZ_DIR)/run_fuzz.sh interdiff
96+ FUZZ_BINDIR="$(FUZZ_BINDIR)" $(FUZZ_DIR)/run_fuzz.sh interdiff
8697
87- fuzz-rediff: fuzz-corpus src/rediff
98+ fuzz-rediff: fuzz-corpus
8899 @echo "Starting rediff fuzzing (interactive)..."
89- $(FUZZ_DIR)/run_fuzz.sh rediff
100+ FUZZ_BINDIR="$(FUZZ_BINDIR)" $(FUZZ_DIR)/run_fuzz.sh rediff
90101
91- fuzz-grepdiff: fuzz-corpus src/grepdiff
102+ fuzz-grepdiff: fuzz-corpus
92103 @echo "Starting grepdiff fuzzing (interactive)..."
93- $(FUZZ_DIR)/run_fuzz.sh grepdiff
104+ FUZZ_BINDIR="$(FUZZ_BINDIR)" $(FUZZ_DIR)/run_fuzz.sh grepdiff
94105
95- fuzz-lsdiff: fuzz-corpus src/lsdiff
106+ fuzz-lsdiff: fuzz-corpus
96107 @echo "Starting lsdiff fuzzing (interactive)..."
97- $(FUZZ_DIR)/run_fuzz.sh lsdiff
108+ FUZZ_BINDIR="$(FUZZ_BINDIR)" $(FUZZ_DIR)/run_fuzz.sh lsdiff
98109
99110# Analyze fuzzing results
100111fuzz-analyze: $(FUZZ_DIR)/analyze_crashes.sh
0 commit comments