mirror of
https://github.com/AFLplusplus/AFLplusplus.git
synced 2025-06-18 20:48:07 +00:00
add sancov-like allow/denylist instrument feature
This commit is contained in:
@ -229,7 +229,8 @@ static void edit_params(u32 argc, char **argv, char **envp) {
|
||||
if (lto_mode) {
|
||||
|
||||
if (getenv("AFL_LLVM_INSTRUMENT_FILE") != NULL ||
|
||||
getenv("AFL_LLVM_WHITELIST")) {
|
||||
getenv("AFL_LLVM_WHITELIST") || getenv("AFL_LLVM_ALLOWLIST") ||
|
||||
getenv("AFL_LLVM_DENYLIST") || getenv("AFL_LLVM_BLOCKLIST")) {
|
||||
|
||||
cc_params[cc_par_cnt++] = "-Xclang";
|
||||
cc_params[cc_par_cnt++] = "-load";
|
||||
@ -637,9 +638,13 @@ int main(int argc, char **argv, char **envp) {
|
||||
|
||||
}
|
||||
|
||||
if ((getenv("AFL_LLVM_INSTRUMENT_FILE") || getenv("AFL_LLVM_WHITELIST")) &&
|
||||
if ((getenv("AFL_LLVM_INSTRUMENT_FILE") != NULL ||
|
||||
getenv("AFL_LLVM_WHITELIST") || getenv("AFL_LLVM_ALLOWLIST") ||
|
||||
getenv("AFL_LLVM_DENYLIST") || getenv("AFL_LLVM_BLOCKLIST")) &&
|
||||
getenv("AFL_DONT_OPTIMIZE"))
|
||||
FATAL("AFL_LLVM_INSTRUMENT_FILE and AFL_DONT_OPTIMIZE cannot be combined");
|
||||
WARNF(
|
||||
"AFL_LLVM_ALLOWLIST/DENYLIST and AFL_DONT_OPTIMIZE cannot be combined "
|
||||
"for file matching, only function matching!");
|
||||
|
||||
if (getenv("AFL_LLVM_INSTRIM") || getenv("INSTRIM") ||
|
||||
getenv("INSTRIM_LIB")) {
|
||||
@ -787,15 +792,17 @@ int main(int argc, char **argv, char **envp) {
|
||||
#if LLVM_VERSION_MAJOR <= 6
|
||||
instrument_mode = INSTRUMENT_AFL;
|
||||
#else
|
||||
if (getenv("AFL_LLVM_INSTRUMENT_FILE") || getenv("AFL_LLVM_WHITELIST")) {
|
||||
if (getenv("AFL_LLVM_INSTRUMENT_FILE") != NULL ||
|
||||
getenv("AFL_LLVM_WHITELIST") || getenv("AFL_LLVM_ALLOWLIST") ||
|
||||
getenv("AFL_LLVM_DENYLIST") || getenv("AFL_LLVM_BLOCKLIST")) {
|
||||
|
||||
instrument_mode = INSTRUMENT_AFL;
|
||||
WARNF(
|
||||
"switching to classic instrumentation because "
|
||||
"AFL_LLVM_INSTRUMENT_FILE does not work with PCGUARD. Use "
|
||||
"-fsanitize-coverage-allowlist=allowlist.txt if you want to use "
|
||||
"PCGUARD. Requires llvm 12+. See "
|
||||
"https://clang.llvm.org/docs/"
|
||||
"AFL_LLVM_ALLOWLIST/DENYLIST does not work with PCGUARD. Use "
|
||||
"-fsanitize-coverage-allowlist=allowlist.txt or "
|
||||
"-fsanitize-coverage-blocklist=denylist.txt if you want to use "
|
||||
"PCGUARD. Requires llvm 12+. See https://clang.llvm.org/docs/ "
|
||||
"SanitizerCoverage.html#partially-disabling-instrumentation");
|
||||
|
||||
} else
|
||||
@ -846,11 +853,14 @@ int main(int argc, char **argv, char **envp) {
|
||||
"together");
|
||||
|
||||
if (instrument_mode == INSTRUMENT_PCGUARD &&
|
||||
(getenv("AFL_LLVM_INSTRUMENT_FILE") || getenv("AFL_LLVM_WHITELIST")))
|
||||
(getenv("AFL_LLVM_INSTRUMENT_FILE") != NULL ||
|
||||
getenv("AFL_LLVM_WHITELIST") || getenv("AFL_LLVM_ALLOWLIST") ||
|
||||
getenv("AFL_LLVM_DENYLIST") || getenv("AFL_LLVM_BLOCKLIST")))
|
||||
FATAL(
|
||||
"Instrumentation type PCGUARD does not support "
|
||||
"AFL_LLVM_INSTRUMENT_FILE! Use "
|
||||
"-fsanitize-coverage-allowlist=allowlist.txt instead (requires llvm "
|
||||
"AFL_LLVM_ALLOWLIST/DENYLIST! Use "
|
||||
"-fsanitize-coverage-allowlist=allowlist.txt or "
|
||||
"-fsanitize-coverage-blocklist=denylist.txt instead (requires llvm "
|
||||
"12+), see "
|
||||
"https://clang.llvm.org/docs/"
|
||||
"SanitizerCoverage.html#partially-disabling-instrumentation");
|
||||
|
Reference in New Issue
Block a user