aboutsummaryrefslogtreecommitdiff
path: root/llvm_mode
diff options
context:
space:
mode:
authorSebastian Ă–sterlund <s.osterlund@vu.nl>2020-05-29 15:47:34 +0200
committerSebastian Ă–sterlund <s.osterlund@vu.nl>2020-05-29 15:47:34 +0200
commit8bb0232ace731c596e9e4e083a048784e35221cd (patch)
tree5597bd138505eb931c26b05d0dbd8d77bba70a7f /llvm_mode
parent84df805ed3e14fb42f0c02420d6ae538a427fa2f (diff)
downloadafl++-8bb0232ace731c596e9e4e083a048784e35221cd.tar.gz
Remove AFL_LLVM_WHITELIST_FNMATCH env variable
Diffstat (limited to 'llvm_mode')
-rw-r--r--llvm_mode/README.whitelist.md30
-rw-r--r--llvm_mode/afl-llvm-common.cc36
2 files changed, 10 insertions, 56 deletions
diff --git a/llvm_mode/README.whitelist.md b/llvm_mode/README.whitelist.md
index 12f2e5c3..6393fae8 100644
--- a/llvm_mode/README.whitelist.md
+++ b/llvm_mode/README.whitelist.md
@@ -75,31 +75,5 @@ required anymore (and might hurt performance and crash detection, so better not
use -g).
## 4) UNIX-style filename pattern matching
-By default you need to add all the files you want to whitelist to the file
-specified by AFL_LLVM_WHITELIST. By setting the env variable
-AFL_LLVM_WHITELIST_FNMATCH, afl++ allows use of wildcards and other
-matching features available through `fnmatch` (we use `fnmatch` with no flags
-set). Note that setting AFL_LLVM_WHITELIST_FNMATCH might
-break backwards-compatibility with existing whitelists, since it does not match
-on the end of the file entry anymore, but rather matches on the full filename
-path.
-
-The behavior should be the same if you prepend `*/` to every line.
-
-For example, the entry:
-```
-*/a*.cpp
-```
-
-Would now match:
-```
-feature_a/a1.cpp
-feature_a/a2.cpp
-```
-
-But
-```
-a*.cpp
-```
-
-Would not match any of the files in the previous example.
+You can add UNIX-style pattern matching in the whitelist entries. See `man
+fnmatch` for the syntax. We do not set any of the `fnmatch` flags.
diff --git a/llvm_mode/afl-llvm-common.cc b/llvm_mode/afl-llvm-common.cc
index 76de1d0f..6c7222cd 100644
--- a/llvm_mode/afl-llvm-common.cc
+++ b/llvm_mode/afl-llvm-common.cc
@@ -147,29 +147,19 @@ bool isInWhitelist(llvm::Function *F) {
/* Continue only if we know where we actually are */
if (!instFilename.str().empty()) {
- char *enable_fnmatch = getenv("AFL_LLVM_WHITELIST_FNMATCH");
-
for (std::list<std::string>::iterator it = myWhitelist.begin();
it != myWhitelist.end(); ++it) {
/* We don't check for filename equality here because
* filenames might actually be full paths. Instead we
* check that the actual filename ends in the filename
- * specified in the list. Enable UNIX-style pattern
- * matching if AFL_LLVM_WHITELIST_FNMATCH is set */
+ * specified in the list. We also allow UNIX-style pattern
+ * matching */
if (instFilename.str().length() >= it->length()) {
- if (enable_fnmatch &&
- fnmatch((*it).c_str(), instFilename.str().c_str(), 0) == 0) {
-
- return true;
-
- } else if (!enable_fnmatch &&
-
- instFilename.str().compare(
- instFilename.str().length() - it->length(),
- it->length(), *it) == 0) {
+ if (fnmatch(("*" + *it).c_str(), instFilename.str().c_str(), 0) ==
+ 0) {
return true;
@@ -195,29 +185,19 @@ bool isInWhitelist(llvm::Function *F) {
/* Continue only if we know where we actually are */
if (!instFilename.str().empty()) {
- char *enable_fnmatch = getenv("AFL_LLVM_WHITELIST_FNMATCH");
-
for (std::list<std::string>::iterator it = myWhitelist.begin();
it != myWhitelist.end(); ++it) {
/* We don't check for filename equality here because
* filenames might actually be full paths. Instead we
* check that the actual filename ends in the filename
- * specified in the list. Enable UNIX-style pattern
- * matching if AFL_LLVM_WHITELIST_FNMATCH is set */
+ * specified in the list. We also allow UNIX-style pattern
+ * matching */
if (instFilename.str().length() >= it->length()) {
- if (enable_fnmatch &&
- fnmatch((*it).c_str(), instFilename.str().c_str(), 0) == 0) {
-
- return true;
-
- } else if (!enable_fnmatch &&
-
- instFilename.str().compare(
- instFilename.str().length() - it->length(),
- it->length(), *it) == 0) {
+ if (fnmatch(("*" + *it).c_str(), instFilename.str().c_str(), 0) ==
+ 0) {
return true;