From ee33faa8813b9cea9fb5ce8f394375f81eee944b Mon Sep 17 00:00:00 2001 From: Dominik Maier Date: Mon, 9 Aug 2021 02:59:39 +0200 Subject: [PATCH] Bring back libpng CI on MacOS (#255) * Makefile fix for libpng on MacOS (#252) * clean exit for libpng_launcher --- fuzzers/libfuzzer_libpng/Makefile | 13 +++---------- fuzzers/libfuzzer_libpng_launcher/Makefile | 9 +-------- fuzzers/libfuzzer_libpng_launcher/src/lib.rs | 9 +++++++-- 3 files changed, 11 insertions(+), 20 deletions(-) diff --git a/fuzzers/libfuzzer_libpng/Makefile b/fuzzers/libfuzzer_libpng/Makefile index 67ab7c4ca7..bce720ec93 100644 --- a/fuzzers/libfuzzer_libpng/Makefile +++ b/fuzzers/libfuzzer_libpng/Makefile @@ -2,7 +2,7 @@ FUZZER_NAME="fuzzer_libpng" PROJECT_DIR=$(shell dirname $(realpath $(firstword $(MAKEFILE_LIST)))) UNAME := $(shell uname) -PHONY: all +PHONY: all libafl_cc libafl_cxx all: fuzzer @@ -19,7 +19,7 @@ libafl_cxx: target/release/libafl_cxx libafl_cc: target/release/libafl_cxx libpng-1.6.37/.libs/libpng16.a: libpng-1.6.37 libafl_cc - cd libpng-1.6.37 && ./configure + cd libpng-1.6.37 && ./configure --enable-shared=no --with-pic=yes --enable-hardware-optimizations=yes $(MAKE) -C libpng-1.6.37 CC="$(PROJECT_DIR)/target/release/libafl_cc" CXX="$(PROJECT_DIR)/target/release/libafl_cxx" @@ -36,19 +36,14 @@ fuzzer: libpng-1.6.37/.libs/libpng16.a libafl_cxx -lm -lz clean: - rm ./$(FUZZER_NAME) $(MAKE) -C libpng-1.6.37 clean + rm ./$(FUZZER_NAME) run: all ./$(FUZZER_NAME) & sleep 0.2 ./$(FUZZER_NAME) >/dev/null 2>/dev/null & -ifeq ($(UNAME), Darwin) -short_test: libafl_cc - $(warning "The libpng linking step is currently broken on MacOS! See Issue #246") - -else short_test: all rm -rf libafl_unix_shmem_server || true timeout 11s ./$(FUZZER_NAME) & @@ -58,8 +53,6 @@ short_test: all timeout 10s taskset -c 2 ./$(FUZZER_NAME) >/dev/null 2>/dev/null & timeout 10s taskset -c 3 ./$(FUZZER_NAME) >/dev/null 2>/dev/null & -endif - test: all timeout 60s ./$(FUZZER_NAME) & sleep 0.2 diff --git a/fuzzers/libfuzzer_libpng_launcher/Makefile b/fuzzers/libfuzzer_libpng_launcher/Makefile index 395763f085..ca0a514241 100644 --- a/fuzzers/libfuzzer_libpng_launcher/Makefile +++ b/fuzzers/libfuzzer_libpng_launcher/Makefile @@ -19,7 +19,7 @@ libafl_cxx: target/release/libafl_cxx libafl_cc: target/release/libafl_cxx libpng-1.6.37/.libs/libpng16.a: libpng-1.6.37 libafl_cc - cd libpng-1.6.37 && ./configure + cd libpng-1.6.37 && ./configure --enable-shared=no --with-pic=yes --enable-hardware-optimizations=yes $(MAKE) -C libpng-1.6.37 CC="$(PROJECT_DIR)/target/release/libafl_cc" CXX="$(PROJECT_DIR)/target/release/libafl_cxx" @@ -42,16 +42,9 @@ clean: run: all ./$(FUZZER_NAME) --cores 0 & -ifeq ($(UNAME), Darwin) -short_test: libafl_cc - $(warning "The libpng linking step is currently broken on MacOS! See Issue #246") - -else short_test: all rm -rf libafl_unix_shmem_server || true timeout 10s ./$(FUZZER_NAME) --cores 0 & -endif - test: all timeout 60s ./$(FUZZER_NAME) --cores 0 & diff --git a/fuzzers/libfuzzer_libpng_launcher/src/lib.rs b/fuzzers/libfuzzer_libpng_launcher/src/lib.rs index a01f3fd08b..61138a9434 100644 --- a/fuzzers/libfuzzer_libpng_launcher/src/lib.rs +++ b/fuzzers/libfuzzer_libpng_launcher/src/lib.rs @@ -31,6 +31,7 @@ use libafl::{ stages::mutational::StdMutationalStage, state::{HasCorpus, HasMetadata, StdState}, stats::MultiStats, + Error, }; use libafl_targets::{libfuzzer_initialize, libfuzzer_test_one_input, EDGES_MAP, MAX_EDGES_NUM}; @@ -163,7 +164,7 @@ pub fn libafl_main() { Ok(()) }; - Launcher::builder() + match Launcher::builder() .shmem_provider(shmem_provider) .configuration("launcher default".into()) .stats(stats) @@ -173,5 +174,9 @@ pub fn libafl_main() { .stdout_file(Some("/dev/null")) .build() .launch() - .expect("Launcher failed"); + { + Ok(()) => (), + Err(Error::ShuttingDown) => println!("Fuzzing stopped by user. Good bye."), + Err(err) => panic!("Failed to run launcher: {:?}", err), + } }