aboutsummaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/afl-fuzz.h29
-rw-r--r--include/debug.h67
-rw-r--r--include/envs.h3
3 files changed, 63 insertions, 36 deletions
diff --git a/include/afl-fuzz.h b/include/afl-fuzz.h
index b82ddb4a..51ab0e85 100644
--- a/include/afl-fuzz.h
+++ b/include/afl-fuzz.h
@@ -656,6 +656,7 @@ typedef struct afl_state {
struct custom_mutator {
const char *name;
+ char * name_short;
void * dh;
u8 * post_process_buf;
size_t post_process_size;
@@ -986,6 +987,8 @@ uint64_t rand_next(afl_state_t *afl);
static inline u32 rand_below(afl_state_t *afl, u32 limit) {
+ if (limit <= 1) return 0;
+
/* The boundary not being necessarily a power of 2,
we need to ensure the result uniformity. */
if (unlikely(!afl->rand_cnt--) && likely(!afl->fixed_seed)) {
@@ -1001,6 +1004,32 @@ static inline u32 rand_below(afl_state_t *afl, u32 limit) {
}
+/* we prefer lower range values here */
+/* this is only called with normal havoc, not MOpt, to have an equalizer for
+ expand havoc mode */
+static inline u32 rand_below_datalen(afl_state_t *afl, u32 limit) {
+
+ if (limit <= 1) return 0;
+
+ switch (rand_below(afl, 3)) {
+
+ case 2:
+ return (rand_below(afl, limit) % (1 + rand_below(afl, limit - 1))) %
+ (1 + rand_below(afl, limit - 1));
+ break;
+ case 1:
+ return rand_below(afl, limit) % (1 + rand_below(afl, limit - 1));
+ break;
+ case 0:
+ return rand_below(afl, limit);
+ break;
+
+ }
+
+ return 1; // cannot be reached
+
+}
+
static inline s64 rand_get_seed(afl_state_t *afl) {
if (unlikely(afl->fixed_seed)) { return afl->init_seed; }
diff --git a/include/debug.h b/include/debug.h
index d1bd971b..f9ebce58 100644
--- a/include/debug.h
+++ b/include/debug.h
@@ -28,11 +28,6 @@
#include "types.h"
#include "config.h"
-/* __FUNCTION__ is non-iso */
-#ifdef __func__
- #define __FUNCTION__ __func__
-#endif
-
/*******************
* Terminal colors *
*******************/
@@ -223,43 +218,43 @@
/* Die with a verbose non-OS fatal error message. */
-#define FATAL(x...) \
- do { \
- \
- SAYF(bSTOP RESET_G1 CURSOR_SHOW cRST cLRD \
- "\n[-] PROGRAM ABORT : " cRST x); \
- SAYF(cLRD "\n Location : " cRST "%s(), %s:%u\n\n", __FUNCTION__, \
- __FILE__, __LINE__); \
- exit(1); \
- \
+#define FATAL(x...) \
+ do { \
+ \
+ SAYF(bSTOP RESET_G1 CURSOR_SHOW cRST cLRD \
+ "\n[-] PROGRAM ABORT : " cRST x); \
+ SAYF(cLRD "\n Location : " cRST "%s(), %s:%u\n\n", __func__, \
+ __FILE__, __LINE__); \
+ exit(1); \
+ \
} while (0)
/* Die by calling abort() to provide a core dump. */
-#define ABORT(x...) \
- do { \
- \
- SAYF(bSTOP RESET_G1 CURSOR_SHOW cRST cLRD \
- "\n[-] PROGRAM ABORT : " cRST x); \
- SAYF(cLRD "\n Stop location : " cRST "%s(), %s:%u\n\n", __FUNCTION__, \
- __FILE__, __LINE__); \
- abort(); \
- \
+#define ABORT(x...) \
+ do { \
+ \
+ SAYF(bSTOP RESET_G1 CURSOR_SHOW cRST cLRD \
+ "\n[-] PROGRAM ABORT : " cRST x); \
+ SAYF(cLRD "\n Stop location : " cRST "%s(), %s:%u\n\n", __func__, \
+ __FILE__, __LINE__); \
+ abort(); \
+ \
} while (0)
/* Die while also including the output of perror(). */
-#define PFATAL(x...) \
- do { \
- \
- fflush(stdout); \
- SAYF(bSTOP RESET_G1 CURSOR_SHOW cRST cLRD \
- "\n[-] SYSTEM ERROR : " cRST x); \
- SAYF(cLRD "\n Stop location : " cRST "%s(), %s:%u\n", __FUNCTION__, \
- __FILE__, __LINE__); \
- SAYF(cLRD " OS message : " cRST "%s\n", strerror(errno)); \
- exit(1); \
- \
+#define PFATAL(x...) \
+ do { \
+ \
+ fflush(stdout); \
+ SAYF(bSTOP RESET_G1 CURSOR_SHOW cRST cLRD \
+ "\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)); \
+ exit(1); \
+ \
} while (0)
/* Die with FATAL() or PFATAL() depending on the value of res (used to
@@ -281,7 +276,7 @@
#define ck_write(fd, buf, len, fn) \
do { \
\
- u32 _len = (len); \
+ s32 _len = (s32)(len); \
s32 _res = write(fd, buf, _len); \
if (_res != _len) RPFATAL(_res, "Short write to %s", fn); \
\
@@ -290,7 +285,7 @@
#define ck_read(fd, buf, len, fn) \
do { \
\
- u32 _len = (len); \
+ s32 _len = (s32)(len); \
s32 _res = read(fd, buf, _len); \
if (_res != _len) RPFATAL(_res, "Short read from %s", fn); \
\
diff --git a/include/envs.h b/include/envs.h
index 7153ed47..96ae91ba 100644
--- a/include/envs.h
+++ b/include/envs.h
@@ -62,6 +62,9 @@ static char *afl_environment_variables[] = {
"AFL_REAL_LD",
"AFL_LD_PRELOAD",
"AFL_LD_VERBOSE",
+ "AFL_LLVM_ALLOWLIST",
+ "AFL_LLVM_DENYLIST",
+ "AFL_LLVM_BLOCKLIST",
"AFL_LLVM_CMPLOG",
"AFL_LLVM_INSTRIM",
"AFL_LLVM_CTX",