aboutsummaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorvan Hauser <vh@thc.org>2020-12-20 14:30:06 +0100
committervan Hauser <vh@thc.org>2020-12-20 14:30:06 +0100
commit98ee17bc47b1f1d4664be9955a72727fff8e51fa (patch)
tree5c49dd81c9ab6c47538350b53d8b1fd11abe3f6c /include
parenta6116ed533e5db74d654bedda9e747f87cbd8494 (diff)
downloadAFLplusplus-98ee17bc47b1f1d4664be9955a72727fff8e51fa.tar.gz
fix endless loop in afl-cc allow/blocklists starting a line with a comment
Diffstat (limited to 'include')
-rw-r--r--include/config.h13
-rw-r--r--include/debug.h76
-rw-r--r--include/envs.h4
3 files changed, 53 insertions, 40 deletions
diff --git a/include/config.h b/include/config.h
index d57ef223..e8a49270 100644
--- a/include/config.h
+++ b/include/config.h
@@ -37,14 +37,14 @@
******************************************************/
/* console output colors: There are three ways to configure its behavior
- * 1. default: colored outputs fixed on: defined USE_COLOR && defined ALWAYS_COLORED
- * The env var. AFL_NO_COLOR will have no effect
+ * 1. default: colored outputs fixed on: defined USE_COLOR && defined
+ * ALWAYS_COLORED The env var. AFL_NO_COLOR will have no effect
* 2. defined USE_COLOR && !defined ALWAYS_COLORED
* -> depending on env var AFL_NO_COLOR=1 colors can be switched off
* at run-time. Default is to use colors.
* 3. colored outputs fixed off: !defined USE_COLOR
* The env var. AFL_NO_COLOR will have no effect
-*/
+ */
/* Comment out to disable terminal colors (note that this makes afl-analyze
a lot less nice): */
@@ -52,9 +52,10 @@
#define USE_COLOR
#ifdef USE_COLOR
-/* Comment in to always enable terminal colors */
-/* Comment out to enable runtime controlled terminal colors via AFL_NO_COLOR */
-#define ALWAYS_COLORED 1
+ /* Comment in to always enable terminal colors */
+ /* Comment out to enable runtime controlled terminal colors via AFL_NO_COLOR
+ */
+ #define ALWAYS_COLORED 1
#endif
/* StatsD config
diff --git a/include/debug.h b/include/debug.h
index 7a1725b5..7f4a6be1 100644
--- a/include/debug.h
+++ b/include/debug.h
@@ -169,65 +169,77 @@
************************/
#if defined USE_COLOR && !defined ALWAYS_COLORED
-#include <unistd.h>
-#pragma GCC diagnostic ignored "-Wformat-security"
-static inline const char * colorfilter(const char * x) {
+ #include <unistd.h>
+ #pragma GCC diagnostic ignored "-Wformat-security"
+static inline const char *colorfilter(const char *x) {
+
static int once = 1;
static int disabled = 0;
if (once) {
+
/* when there is no tty -> we always want filtering
* when AFL_NO_UI is set filtering depends on AFL_NO_COLOR
* otherwise we want always colors
*/
- disabled = isatty(2) && (!getenv("AFL_NO_UI") || (!getenv("AFL_NO_COLOR") && !getenv("AFL_NO_COLOUR")));
+ disabled =
+ isatty(2) && (!getenv("AFL_NO_UI") ||
+ (!getenv("AFL_NO_COLOR") && !getenv("AFL_NO_COLOUR")));
once = 0;
+
}
+
if (likely(disabled)) return x;
static char monochromestring[4096];
- char *d = monochromestring;
- int in_seq = 0;
+ char * d = monochromestring;
+ int in_seq = 0;
+
+ while (*x) {
- while(*x) {
if (in_seq && *x == 'm') {
+
in_seq = 0;
+
} else {
+
if (!in_seq && *x == '\x1b') { in_seq = 1; }
- if (!in_seq) {
- *d++ = *x;
- }
+ if (!in_seq) { *d++ = *x; }
+
}
+
++x;
+
}
*d = '\0';
return monochromestring;
+
}
+
#else
-#define colorfilter(x) x /* no filtering necessary */
+ #define colorfilter(x) x /* no filtering necessary */
#endif
/* macro magic to transform the first parameter to SAYF
* through colorfilter which strips coloring */
-#define GET_MACRO(_1,_2,_3,_4,_5,_6,_7,_8,_9,_10,\
-_11,_12,_13,_14,_15,_16,_17,_18,_19,_20,\
-_21,_22,_23,_24,_25,_26,_27,_28,_29,_30,\
-_31,_32,_33,_34,_35,_36,_37,_38,_39,_40,\
-NAME,...) NAME
-
-#define SAYF(...) GET_MACRO(__VA_ARGS__, \
-SAYF_N, SAYF_N, SAYF_N, SAYF_N, SAYF_N, \
-SAYF_N, SAYF_N, SAYF_N, SAYF_N, SAYF_N, \
-SAYF_N, SAYF_N, SAYF_N, SAYF_N, SAYF_N, \
-SAYF_N, SAYF_N, SAYF_N, SAYF_N, SAYF_N, \
-SAYF_N, SAYF_N, SAYF_N, SAYF_N, SAYF_N, \
-SAYF_N, SAYF_N, SAYF_N, SAYF_N, SAYF_N, \
-SAYF_N, SAYF_N, SAYF_N, SAYF_N, SAYF_N, \
-SAYF_N, SAYF_N, SAYF_N, SAYF_N, SAYF_1)(__VA_ARGS__)
-
-#define SAYF_1(x) MY_SAYF(colorfilter(x))
-#define SAYF_N(x,...) MY_SAYF(colorfilter(x), __VA_ARGS__)
+#define GET_MACRO(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, \
+ _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, \
+ _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, \
+ _39, _40, NAME, ...) \
+ NAME
+
+#define SAYF(...) \
+ GET_MACRO(__VA_ARGS__, SAYF_N, SAYF_N, SAYF_N, SAYF_N, SAYF_N, SAYF_N, \
+ SAYF_N, SAYF_N, SAYF_N, SAYF_N, SAYF_N, SAYF_N, SAYF_N, SAYF_N, \
+ SAYF_N, SAYF_N, SAYF_N, SAYF_N, SAYF_N, SAYF_N, SAYF_N, SAYF_N, \
+ SAYF_N, SAYF_N, SAYF_N, SAYF_N, SAYF_N, SAYF_N, SAYF_N, SAYF_N, \
+ SAYF_N, SAYF_N, SAYF_N, SAYF_N, SAYF_N, SAYF_N, SAYF_N, SAYF_N, \
+ SAYF_N, SAYF_1) \
+ (__VA_ARGS__)
+
+#define SAYF_1(x) MY_SAYF(colorfilter(x))
+#define SAYF_N(x, ...) MY_SAYF(colorfilter(x), __VA_ARGS__)
/* Just print stuff to the appropriate stream. */
#ifdef MESSAGES_TO_STDOUT
@@ -282,7 +294,7 @@ SAYF_N, SAYF_N, SAYF_N, SAYF_N, SAYF_1)(__VA_ARGS__)
do { \
\
SAYF(bSTOP RESET_G1 CURSOR_SHOW cRST cLRD \
- "\n[-] PROGRAM ABORT : " cRST x); \
+ "\n[-] PROGRAM ABORT : " cRST x); \
SAYF(cLRD "\n Location : " cRST "%s(), %s:%u\n\n", __func__, \
__FILE__, __LINE__); \
exit(1); \
@@ -295,7 +307,7 @@ SAYF_N, SAYF_N, SAYF_N, SAYF_N, SAYF_1)(__VA_ARGS__)
do { \
\
SAYF(bSTOP RESET_G1 CURSOR_SHOW cRST cLRD \
- "\n[-] PROGRAM ABORT : " cRST x); \
+ "\n[-] PROGRAM ABORT : " cRST x); \
SAYF(cLRD "\n Stop location : " cRST "%s(), %s:%u\n\n", __func__, \
__FILE__, __LINE__); \
abort(); \
@@ -309,7 +321,7 @@ SAYF_N, SAYF_N, SAYF_N, SAYF_N, SAYF_1)(__VA_ARGS__)
\
fflush(stdout); \
SAYF(bSTOP RESET_G1 CURSOR_SHOW cRST cLRD \
- "\n[-] SYSTEM ERROR : " cRST x); \
+ "\n[-] SYSTEM ERROR : " cRST x); \
SAYF(cLRD "\n Stop location : " cRST "%s(), %s:%u\n", __func__, \
__FILE__, __LINE__); \
SAYF(cLRD " OS message : " cRST "%s\n", strerror(errno)); \
diff --git a/include/envs.h b/include/envs.h
index f16e61f0..e4e49c4d 100644
--- a/include/envs.h
+++ b/include/envs.h
@@ -78,8 +78,8 @@ static char *afl_environment_variables[] = {
"AFL_LLVM_CTX",
"AFL_LLVM_DICT2FILE",
"AFL_LLVM_DOCUMENT_IDS",
- "AFL_LLVM_INSTRUMENT",
"AFL_LLVM_INSTRIM_LOOPHEAD",
+ "AFL_LLVM_INSTRUMENT",
"AFL_LLVM_LTO_AUTODICTIONARY",
"AFL_LLVM_AUTODICTIONARY",
"AFL_LLVM_SKIPSINGLEBLOCK",
@@ -103,7 +103,7 @@ static char *afl_environment_variables[] = {
"AFL_NO_ARITH",
"AFL_NO_AUTODICT",
"AFL_NO_BUILTIN",
-#if defined USE_COLOR && ! defined ALWAYS_COLORED
+#if defined USE_COLOR && !defined ALWAYS_COLORED
"AFL_NO_COLOR",
"AFL_NO_COLOUR",
#endif