aboutsummaryrefslogtreecommitdiff
path: root/driver
diff options
context:
space:
mode:
authorFabian Meumertzheim <meumertzheim@code-intelligence.com>2021-02-26 11:28:56 +0100
committerFabian Meumertzheim <fabian@meumertzhe.im>2021-03-22 15:05:37 +0100
commit0d93c0751adcd8e76ac623e09bbd774ee0f0e755 (patch)
treea0a2881b0fbaef0f36abf06fff14a93db66c8eba /driver
parentf938920a37042376e56c7ac771886565bcfe8b5e (diff)
downloadjazzer-api-0d93c0751adcd8e76ac623e09bbd774ee0f0e755.tar.gz
Replace uses of quick_exit and at_quick_exit
quick_exit is not supported on macOS, but can easily replaced by a call to _Exit after running our cleanup manually.
Diffstat (limited to 'driver')
-rw-r--r--driver/fuzz_target_runner.cpp2
-rw-r--r--driver/libfuzzer_driver.cpp1
-rw-r--r--driver/libfuzzer_fuzz_target.cpp6
3 files changed, 3 insertions, 6 deletions
diff --git a/driver/fuzz_target_runner.cpp b/driver/fuzz_target_runner.cpp
index ae3602e0..0d83264d 100644
--- a/driver/fuzz_target_runner.cpp
+++ b/driver/fuzz_target_runner.cpp
@@ -166,7 +166,7 @@ FuzzTargetRunner::FuzzTargetRunner(
LOG(ERROR) << "Invalid dedup token (expected up to 16 hex digits): '"
<< str_token << "'";
// Don't let libFuzzer print a crash stack trace.
- std::quick_exit(1);
+ _Exit(1);
}
}
}
diff --git a/driver/libfuzzer_driver.cpp b/driver/libfuzzer_driver.cpp
index 2accc40d..e7564582 100644
--- a/driver/libfuzzer_driver.cpp
+++ b/driver/libfuzzer_driver.cpp
@@ -148,7 +148,6 @@ AbstractLibfuzzerDriver::AbstractLibfuzzerDriver(
}
};
std::atexit(cleanup_fn);
- std::at_quick_exit(cleanup_fn);
}
initJvm(*argv_start);
diff --git a/driver/libfuzzer_fuzz_target.cpp b/driver/libfuzzer_fuzz_target.cpp
index 7f921321..295f7079 100644
--- a/driver/libfuzzer_fuzz_target.cpp
+++ b/driver/libfuzzer_fuzz_target.cpp
@@ -50,10 +50,7 @@ extern "C" int LLVMFuzzerInitialize(int *argc, char ***argv) {
<< std::endl;
}
gLibfuzzerDriver = std::make_unique<Driver>(argc, argv);
- // Run even if we use std::quick_exit to prevent libFuzzer stack trace
- // printing.
std::atexit(&driver_cleanup);
- std::at_quick_exit(&driver_cleanup);
return 0;
}
@@ -74,7 +71,8 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, const size_t size) {
return 0;
}
// Exit directly without invoking libFuzzer's atexit hook.
- std::quick_exit(Driver::kErrorExitCode);
+ driver_cleanup();
+ _Exit(Driver::kErrorExitCode);
} else {
// libFuzzer failed to register its death callback, exit normally.
std::exit(1);