# Variables [env] FUZZER_NAME = 'fuzzer_sd' PROJECT_DIR = { script = ["pwd"] } CARGO_TARGET_DIR = { value = "target", condition = { env_not_set = [ "CARGO_TARGET_DIR", ] } } PROFILE = { value = "release" } PROFILE_DIR = { value = "release" } LIBAFL_CC = '${CARGO_TARGET_DIR}/${PROFILE_DIR}/libafl_cc' FUZZER = '${CARGO_TARGET_DIR}/${PROFILE_DIR}/${FUZZER_NAME}' # Compilers [tasks.cc] command = "cargo" args = ["build", "--profile", "${PROFILE}", "--bin", "libafl_cc"] # Harness [tasks.fuzzer] command = "cargo" args = ["build", "--profile", "${PROFILE}", "--bin", "${FUZZER_NAME}"] dependencies = ["cc"] [tasks.build] alias = "fuzzer" # Run the fuzzer [tasks.run] command = "${CARGO_TARGET_DIR}/${PROFILE_DIR}/${FUZZER_NAME}" dependencies = ["fuzzer"] # Test [tasks.test] linux_alias = "test_unix" mac_alias = "test_unix" windows_alias = "unsupported" [tasks.test_unix] script_runner = "@shell" script = ''' timeout 30s ${CARGO_TARGET_DIR}/${PROFILE_DIR}/${FUZZER_NAME} | tee fuzz_stdout.log || true if grep -qa "objectives: 1" fuzz_stdout.log; then echo "Fuzzer is working" else echo "Fuzzer does not generate any testcases or any crashes" exit 1 fi ''' dependencies = ["fuzzer"] # Clean up [tasks.clean] # Disable default `clean` definition clear = true script_runner = "@shell" script = ''' cargo clean '''