From 8f8e74d670b3aadda6b288b6f1a2de8a1cf98379 Mon Sep 17 00:00:00 2001 From: Dominik Maier Date: Mon, 20 Mar 2023 10:04:27 +0100 Subject: [PATCH] Don't build z3 from source by default (and add static_z3 feature) (#1160) * Reduce build times by using preinstaled z3 * fix env order --------- Co-authored-by: Dongjia "toka" Zhang --- fuzzers/baby_fuzzer_swap_differential/Makefile.toml | 2 +- fuzzers/fuzzbench/Makefile.toml | 2 +- fuzzers/fuzzbench_text/Makefile.toml | 2 +- fuzzers/libfuzzer_libpng/Makefile.toml | 2 +- fuzzers/libfuzzer_libpng_cmin/Makefile.toml | 6 +++--- fuzzers/libfuzzer_libpng_ctx/Makefile.toml | 3 +-- fuzzers/libfuzzer_stb_image/Makefile.toml | 2 +- fuzzers/libfuzzer_stb_image_sugar/Makefile.toml | 2 +- libafl/Cargo.toml | 7 ++++--- 9 files changed, 14 insertions(+), 14 deletions(-) diff --git a/fuzzers/baby_fuzzer_swap_differential/Makefile.toml b/fuzzers/baby_fuzzer_swap_differential/Makefile.toml index c37f199fe1..8f3c6a1dfd 100644 --- a/fuzzers/baby_fuzzer_swap_differential/Makefile.toml +++ b/fuzzers/baby_fuzzer_swap_differential/Makefile.toml @@ -1,10 +1,10 @@ # Variables [env] FUZZER_NAME='fuzzer_sd' +PROJECT_DIR = { script = ["pwd"] } CARGO_TARGET_DIR = { value = "target", condition = { env_not_set = ["CARGO_TARGET_DIR"] } } LIBAFL_CC = '${CARGO_TARGET_DIR}/release/libafl_cc' FUZZER = '${CARGO_TARGET_DIR}/release/${FUZZER_NAME}' -PROJECT_DIR = { script = ["pwd"] } # Compilers [tasks.cc] diff --git a/fuzzers/fuzzbench/Makefile.toml b/fuzzers/fuzzbench/Makefile.toml index b1a36c46c9..eae2df8c35 100644 --- a/fuzzers/fuzzbench/Makefile.toml +++ b/fuzzers/fuzzbench/Makefile.toml @@ -1,7 +1,7 @@ [env] +PROJECT_DIR = { script = ["pwd"] } CARGO_TARGET_DIR = { value = "${PROJECT_DIR}/target", condition = { env_not_set = ["CARGO_TARGET_DIR"] } } FUZZER_NAME="fuzzer" -PROJECT_DIR = { script = ["pwd"] } [tasks.unsupported] script_runner="@shell" diff --git a/fuzzers/fuzzbench_text/Makefile.toml b/fuzzers/fuzzbench_text/Makefile.toml index 0c1a1d0333..ce0f2e49ca 100644 --- a/fuzzers/fuzzbench_text/Makefile.toml +++ b/fuzzers/fuzzbench_text/Makefile.toml @@ -1,7 +1,7 @@ [env] +PROJECT_DIR = { script = ["pwd"] } CARGO_TARGET_DIR = { value = "${PROJECT_DIR}/target", condition = { env_not_set = ["CARGO_TARGET_DIR"] } } FUZZER_NAME="fuzzer" -PROJECT_DIR = { script = ["pwd"] } [tasks.unsupported] script_runner="@shell" diff --git a/fuzzers/libfuzzer_libpng/Makefile.toml b/fuzzers/libfuzzer_libpng/Makefile.toml index dbd91bc25e..e9ec477216 100644 --- a/fuzzers/libfuzzer_libpng/Makefile.toml +++ b/fuzzers/libfuzzer_libpng/Makefile.toml @@ -1,11 +1,11 @@ # Variables [env] FUZZER_NAME='fuzzer_libpng' +PROJECT_DIR = { script = ["pwd"] } CARGO_TARGET_DIR = { value = "${PROJECT_DIR}/target", condition = { env_not_set = ["CARGO_TARGET_DIR"] } } LIBAFL_CC = '${CARGO_TARGET_DIR}/release/libafl_cc' LIBAFL_CXX = '${CARGO_TARGET_DIR}/release/libafl_cxx' FUZZER = '${CARGO_TARGET_DIR}/release/${FUZZER_NAME}' -PROJECT_DIR = { script = ["pwd"] } [tasks.unsupported] script_runner="@shell" diff --git a/fuzzers/libfuzzer_libpng_cmin/Makefile.toml b/fuzzers/libfuzzer_libpng_cmin/Makefile.toml index 7f11b6f1c0..b33f85ffe3 100644 --- a/fuzzers/libfuzzer_libpng_cmin/Makefile.toml +++ b/fuzzers/libfuzzer_libpng_cmin/Makefile.toml @@ -1,11 +1,11 @@ # Variables [env] FUZZER_NAME='fuzzer_libpng' +PROJECT_DIR = { script = ["pwd"] } CARGO_TARGET_DIR = { value = "${PROJECT_DIR}/target", condition = { env_not_set = ["CARGO_TARGET_DIR"] } } LIBAFL_CC = '${CARGO_TARGET_DIR}/release/libafl_cc' LIBAFL_CXX = '${CARGO_TARGET_DIR}/release/libafl_cxx' FUZZER = '${CARGO_TARGET_DIR}/release/${FUZZER_NAME}' -PROJECT_DIR = { script = ["pwd"] } [tasks.unsupported] script_runner="@shell" @@ -102,7 +102,7 @@ windows_alias = "unsupported" [tasks.fuzzer_unix] command = "${CARGO_TARGET_DIR}/release/libafl_cxx" -args = ["${PROJECT_DIR}/harness.cc", "${PROJECT_DIR}/libpng-1.6.37/.libs/libpng16.a", "-I", "${PROJECT_DIR}/libpng-1.6.37/", "-o", "${FUZZER_NAME}", "-lm", "-lz"] +args = ["${PROJECT_DIR}/harness.cc", "${PROJECT_DIR}/libpng-1.6.37/.libs/libpng16.a", "-I", "${PROJECT_DIR}/libpng-1.6.37/", "-o", "${FUZZER_NAME}", "-lm", "-lz", "-lz3"] dependencies = [ "lib", "cxx", "cc" ] # Crashing Harness @@ -113,7 +113,7 @@ windows_alias = "unsupported" [tasks.fuzzer_crash_unix] command = "${CARGO_TARGET_DIR}/release/libafl_cxx" -args = ["${PROJECT_DIR}/harness.cc", "${PROJECT_DIR}/libpng-1.6.37/.libs/libpng16.a", "-I", "${PROJECT_DIR}/libpng-1.6.37/", "-o", "${FUZZER_NAME}_crash", "-lm", "-lz"] +args = ["${PROJECT_DIR}/harness.cc", "${PROJECT_DIR}/libpng-1.6.37/.libs/libpng16.a", "-I", "${PROJECT_DIR}/libpng-1.6.37/", "-o", "${FUZZER_NAME}_crash", "-lm", "-lz", "-lz3"] dependencies = [ "crash_lib", "crash_cxx", "crash_cc" ] # Run the fuzzer diff --git a/fuzzers/libfuzzer_libpng_ctx/Makefile.toml b/fuzzers/libfuzzer_libpng_ctx/Makefile.toml index 066ce915ff..e2613fc8fd 100644 --- a/fuzzers/libfuzzer_libpng_ctx/Makefile.toml +++ b/fuzzers/libfuzzer_libpng_ctx/Makefile.toml @@ -1,13 +1,12 @@ # Variables [env] FUZZER_NAME='fuzzer_libpng_ctx' +PROJECT_DIR = { script = ["pwd"] } CARGO_TARGET_DIR = { value = "${PROJECT_DIR}/target", condition = { env_not_set = ["CARGO_TARGET_DIR"] } } LIBAFL_CC = '${CARGO_TARGET_DIR}/release/libafl_cc' LIBAFL_CXX = '${CARGO_TARGET_DIR}/release/libafl_cxx' FUZZER = '${CARGO_TARGET_DIR}/release/${FUZZER_NAME}' -PROJECT_DIR = { script = ["pwd"] } - [tasks.unsupported] script_runner="@shell" script=''' diff --git a/fuzzers/libfuzzer_stb_image/Makefile.toml b/fuzzers/libfuzzer_stb_image/Makefile.toml index 344e23ce5c..d435c7c08c 100644 --- a/fuzzers/libfuzzer_stb_image/Makefile.toml +++ b/fuzzers/libfuzzer_stb_image/Makefile.toml @@ -1,11 +1,11 @@ # Variables [env] FUZZER_NAME='libfuzzer_stb_image' +PROJECT_DIR = { script = ["pwd"] } CARGO_TARGET_DIR = { value = "${PROJECT_DIR}/target", condition = { env_not_set = ["CARGO_TARGET_DIR"] } } LIBAFL_CC = { source = "${CARGO_MAKE_RUST_TARGET_OS}", default_value = '${CARGO_TARGET_DIR}/release/libafl_cc', mapping = {"windows" = '.\\target\\release\\libafl_cc.exe'} } LIBAFL_CXX = { source = "${CARGO_MAKE_RUST_TARGET_OS}", default_value = '${CARGO_TARGET_DIR}/release/libafl_cxx', mapping = {"windows" = '.\\target\\release\\libafl_cxx.exe'} } FUZZER = { source = "${CARGO_MAKE_RUST_TARGET_OS}", default_value = '${CARGO_TARGET_DIR}/release/libfuzzer_stb_image', mapping = {"windows" = '.\\target\\release\\libfuzzer_stb_image.exe'} } -PROJECT_DIR = { script = ["pwd"] } # Compilers [tasks.cxx] diff --git a/fuzzers/libfuzzer_stb_image_sugar/Makefile.toml b/fuzzers/libfuzzer_stb_image_sugar/Makefile.toml index 752c07bc88..14c49bb986 100644 --- a/fuzzers/libfuzzer_stb_image_sugar/Makefile.toml +++ b/fuzzers/libfuzzer_stb_image_sugar/Makefile.toml @@ -1,11 +1,11 @@ # Variables [env] FUZZER_NAME='libfuzzer_stb_image_sugar' +PROJECT_DIR = { script = ["pwd"] } CARGO_TARGET_DIR = { value = "${PROJECT_DIR}/target", condition = { env_not_set = ["CARGO_TARGET_DIR"] } } LIBAFL_CC = { source = "${CARGO_MAKE_RUST_TARGET_OS}", default_value = '${CARGO_TARGET_DIR}/release/libafl_cc', mapping = {"windows" = '.\\target\\release\\libafl_cc.exe'} } LIBAFL_CXX = { source = "${CARGO_MAKE_RUST_TARGET_OS}", default_value = '${CARGO_TARGET_DIR}/release/libafl_cxx', mapping = {"windows" = '.\\target\\release\\libafl_cxx.exe'} } FUZZER = { source = "${CARGO_MAKE_RUST_TARGET_OS}", default_value = '${CARGO_TARGET_DIR}/release/libfuzzer_stb_image_sugar', mapping = {"windows" = '.\\target\\release\\libfuzzer_stb_image_sugar.exe'} } -PROJECT_DIR = { script = ["pwd"] } # Compilers [tasks.cxx] diff --git a/libafl/Cargo.toml b/libafl/Cargo.toml index 47e3411759..5839ea09bd 100644 --- a/libafl/Cargo.toml +++ b/libafl/Cargo.toml @@ -27,8 +27,9 @@ cli = ["clap"] # expose bolts::cli for easy commandline parsing qemu_cli = ["cli"] # Commandline flags for qemu-based fuzzers frida_cli = ["cli"] # Commandline flags for frida-based fuzzers afl_exec_sec = [] # calculate exec/sec like AFL -errors_backtrace = ["backtrace"] # Create backtraces at Error creation -cmin = ["z3"] # for corpus minimisation +errors_backtrace = ["backtrace"] +cmin = ["z3"] # corpus minimisation +static_z3 = ["z3/static-link-z3"] # Allows us to build z3 from source, instead of installing it corpus_btreemap = [] # Switches from HashMap to BTreeMap for CorpusId gzip = ["miniz_oxide"] # Enables gzip compression in certain parts of the lib regex = ["std", "dep:regex"] # enables the NaiveTokenizer and StacktraceObserver @@ -98,7 +99,7 @@ log = "0.4.17" wait-timeout = { version = "0.2", optional = true } # used by CommandExecutor to wait for child process -z3 = { version = "0.11", features = ["static-link-z3"], optional = true } # for concolic mutation +z3 = { version = "0.11", optional = true } # for concolic mutation and other solving needs pyo3 = { version = "0.17", optional = true, features = ["serde", "macros"] } concat-idents = { version = "1.1.3", optional = true }