]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
YAML shell scripts are stupid. GNU make is evil, but functional
authorAlan T. DeKok <aland@freeradius.org>
Fri, 15 Oct 2021 12:10:49 +0000 (08:10 -0400)
committerAlan T. DeKok <aland@freeradius.org>
Fri, 15 Oct 2021 12:10:49 +0000 (08:10 -0400)
src/bin/fuzzer.mk

index f9bb0bb528afaf5c38cf0e5b1794d9ba688de911..c12c7ca6d011ba6a40f1cec72f80f03b20fb4ff9 100644 (file)
@@ -64,6 +64,7 @@ fuzzer.$(PROTOCOL): $(TEST_BIN_DIR)/fuzzer_$(PROTOCOL) | src/tests/fuzzer-corpus
 #
 #  tests add a 10s timeout.  This is so that we can see if the fuzzers run _at all_.
 #
+ifeq "$(CI)" ""
 test.fuzzer.$(PROTOCOL): $(TEST_BIN_DIR)/fuzzer_$(PROTOCOL) | src/tests/fuzzer-corpus/$(PROTOCOL)
        @echo TEST-FUZZER $(PROTOCOL) for $(FUZZER_TIMEOUT)s
        ${Q}$(TEST_BIN)/fuzzer_$(PROTOCOL) \
@@ -72,6 +73,21 @@ test.fuzzer.$(PROTOCOL): $(TEST_BIN_DIR)/fuzzer_$(PROTOCOL) | src/tests/fuzzer-c
                -max_total_time=$(FUZZER_TIMEOUT) \
                -D share/dictionary \
                src/tests/fuzzer-corpus/$(PROTOCOL)
+else
+test.fuzzer.$(PROTOCOL): $(TEST_BIN_DIR)/fuzzer_$(PROTOCOL) | src/tests/fuzzer-corpus/$(PROTOCOL)
+       @echo TEST-FUZZER $(PROTOCOL) for $(FUZZER_TIMEOUT)s
+       @mkdir -p $(BUILD_DIR)/fuzzer
+       ${Q}if ! $(TEST_BIN)/fuzzer_$(PROTOCOL) \
+               -artifact_prefix="$(FUZZER_ARTIFACTS)/$(PROTOCOL)/" \
+               -max_len=512 $(FUZZER_ARGUMENTS) \
+               -max_total_time=$(FUZZER_TIMEOUT) \
+               -D share/dictionary \
+               src/tests/fuzzer-corpus/$(PROTOCOL) > $(BUILD_DIR)/fuzzer/$(PROTOCOL).log 2>&1; then \
+               tail -20 $(BUILD_DIR)/fuzzer/$(PROTOCOL).log; \
+               echo FAILED; \
+               exit 1; \
+       fi
+endif
 
 test.fuzzer.$(PROTOCOL).crash: $(wildcard $(BUILD_DIR)/fuzzer/$(PROTOCOL)/crash-*) $(TEST_BIN_DIR)/fuzzer_$(PROTOCOL) | src/tests/fuzzer-corpus/$(PROTOCOL)
        $(TEST_BIN)/fuzzer_$(PROTOCOL) \