aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorvan Hauser <vh@thc.org>2020-08-01 17:39:27 +0200
committervan Hauser <vh@thc.org>2020-08-01 17:39:27 +0200
commit4512377fa162be7bb8360628e11655670a61491b (patch)
treecbe82b9fd1260f58ec5972379ef33197fa74cb74
parent9439ba1dac174741c7838c17de202b0dc68c6a88 (diff)
downloadafl++-4512377fa162be7bb8360628e11655670a61491b.tar.gz
compile persistent mode without afl
-rw-r--r--examples/persistent_demo/persistent_demo_new.c11
-rw-r--r--llvm_mode/README.persistent_mode.md15
2 files changed, 26 insertions, 0 deletions
diff --git a/examples/persistent_demo/persistent_demo_new.c b/examples/persistent_demo/persistent_demo_new.c
index e4e328b0..86b19fa8 100644
--- a/examples/persistent_demo/persistent_demo_new.c
+++ b/examples/persistent_demo/persistent_demo_new.c
@@ -28,6 +28,17 @@
#include <signal.h>
#include <string.h>
+/* this lets the source compile without afl-clang-fast/lto */
+#ifndef __AFL_FUZZ_TESTCASE_LEN
+ ssize_t fuzz_len;
+ #define __AFL_FUZZ_TESTCASE_LEN fuzz_len
+ unsigned char fuzz_buf[1024000];
+ #define __AFL_FUZZ_TESTCASE_BUF fuzz_buf
+ #define __AFL_FUZZ_INIT() void sync(void);
+ #define __AFL_LOOP(x) ((fuzz_len = read(0, fuzz_buf, sizeof(fuzz_buf))) > 0 ?
+ #define __AFL_INIT() sync()
+#endif
+
__AFL_FUZZ_INIT();
/* Main entry point. */
diff --git a/llvm_mode/README.persistent_mode.md b/llvm_mode/README.persistent_mode.md
index 83cc7f4d..4f0bcb2e 100644
--- a/llvm_mode/README.persistent_mode.md
+++ b/llvm_mode/README.persistent_mode.md
@@ -52,6 +52,21 @@ afl-clang-fast -o fuzz_target fuzz_target.c -lwhat_you_need_for_your_target
And that is it!
The speed increase is usually x10 to x20.
+If you want to be able to compile the target without afl-clang-fast/lto then
+add this just after the includes:
+
+```
+#ifndef __AFL_FUZZ_TESTCASE_LEN
+ ssize_t fuzz_len;
+ #define __AFL_FUZZ_TESTCASE_LEN fuzz_len
+ unsigned char fuzz_buf[1024000];
+ #define __AFL_FUZZ_TESTCASE_BUF fuzz_buf
+ #define __AFL_FUZZ_INIT() void sync(void);
+ #define __AFL_LOOP(x) ((fuzz_len = read(0, fuzz_buf, sizeof(fuzz_buf))) > 0 ?
+ #define __AFL_INIT() sync()
+#endif
+```
+
## 3) deferred initialization
AFL tries to optimize performance by executing the targeted binary just once,