# 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", ] } } PROFILE = { value = "release" } PROFILE_DIR = { value = "release" } LIBAFL_CC = { source = "${CARGO_MAKE_RUST_TARGET_OS}", default_value = '${CARGO_TARGET_DIR}/${PROFILE_DIR}/libafl_cc', mapping = { "windows" = '.\\target\\${PROFILE_DIR}\\libafl_cc.exe' } } LIBAFL_CXX = { source = "${CARGO_MAKE_RUST_TARGET_OS}", default_value = '${CARGO_TARGET_DIR}/${PROFILE_DIR}/libafl_cxx', mapping = { "windows" = '.\\target\\${PROFILE_DIR}\\libafl_cxx.exe' } } FUZZER = { source = "${CARGO_MAKE_RUST_TARGET_OS}", default_value = '${CARGO_TARGET_DIR}/${PROFILE_DIR}/libfuzzer_stb_image', mapping = { "windows" = '.\\target\\${PROFILE_DIR}\\libfuzzer_stb_image.exe' } } # Compilers [tasks.cxx] condition = { files_not_exist = ["${LIBAFL_CXX}"] } command = "cargo" args = ["build", "--profile", "${PROFILE}"] [tasks.cc] condition = { files_not_exist = ["${LIBAFL_CC}"] } command = "cargo" args = ["build", "--profile", "${PROFILE}"] # Build the fuzzer [tasks.fuzzer] script_runner = "@shell" script = ''' cargo build --profile ${PROFILE} cp ${FUZZER} . ''' dependencies = ["cc", "cxx"] [tasks.run] linux_alias = "run_unix" mac_alias = "run_unix" windows_alias = "run_windows" [tasks.run_unix] script_runner = "@shell" script = ''' ./${FUZZER_NAME} & sleep 0.2 ./${FUZZER_NAME} ''' dependencies = ["fuzzer"] [tasks.run_windows] # Do nothing script_runner = "@shell" script = ''' echo "Not integrated into cargo-make yet." ''' dependencies = ["fuzzer"] [tasks.test] linux_alias = "test_unix" mac_alias = "test_mac" windows_alias = "test_windows" [tasks.test_unix] script_runner = "@shell" script = ''' rm -rf libafl_unix_shmem_server || true (timeout 31s ./${FUZZER_NAME} | tee fuzz_stdout.log 2>/dev/null || true) & sleep 0.2 timeout 30s ./${FUZZER_NAME} >/dev/null 2>/dev/null || true if grep -qa "corpus: 30" fuzz_stdout.log; then echo "Fuzzer is working" else echo "Fuzzer does not generate any testcases or any crashes" exit 1 fi ''' dependencies = ["fuzzer"] [tasks.test_mac] script_runner = "@shell" script = ''' rm -rf libafl_unix_shmem_server || true (timeout 31s ./${FUZZER_NAME} | tee fuzz_stdout.log 2>/dev/null || true) & sleep 0.2 timeout 30s ./${FUZZER_NAME} >/dev/null 2>/dev/null || true ''' dependencies = ["fuzzer"] [tasks.test_windows] # Do nothing script_runner = "@shell" script = ''' echo "Not integrated into cargo-make yet." ''' dependencies = ["fuzzer"] # Clean up [tasks.clean] # Disable default `clean` definition clear = true script_runner = "@shell" script = ''' rm -f ./${FUZZER_NAME} cargo clean '''