summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Wellnhofer <wellnhofer@aevum.de>2015-02-21 21:05:10 +0100
committerNick Wellnhofer <wellnhofer@aevum.de>2015-02-23 17:24:58 +0100
commit573a3dc076cfecb2337cca118bdbd7c4452b1ec6 (patch)
treeb21f648deea3fc347654680f39a0f00788e72335
parent1533c8fbad3acc48e6a2f0a1e305aeb5932b3bbd (diff)
Add Makefile target to fuzz with AFL
Also add a compact test case. As far as I understand, a good test case should exercise many code paths while being as small as possible. There's probably still room for improvement. The variable $AFL_PATH must point to the directory containing the AFL binaries. It can be set as an environment variable or passed to make on the command line.
-rw-r--r--Makefile11
-rw-r--r--test/afl_test_cases/test.md36
2 files changed, 47 insertions, 0 deletions
diff --git a/Makefile b/Makefile
index e6a2314..7cf1cc8 100644
--- a/Makefile
+++ b/Makefile
@@ -59,6 +59,17 @@ prof:
cmake .. -DCMAKE_BUILD_TYPE=Profile; \
make
+afl:
+ @[ -n "$(AFL_PATH)" ] || { echo '$$AFL_PATH not set'; false; }
+ mkdir -p $(BUILDDIR)
+ cd $(BUILDDIR) && cmake .. -DCMAKE_C_COMPILER=$(AFL_PATH)/afl-gcc
+ make
+ $(AFL_PATH)/afl-fuzz \
+ -i test/afl_test_cases \
+ -o test/afl_results \
+ -m none \
+ $(CMARK)
+
mingw:
mkdir -p $(MINGW_BUILDDIR); \
cd $(MINGW_BUILDDIR); \
diff --git a/test/afl_test_cases/test.md b/test/afl_test_cases/test.md
new file mode 100644
index 0000000..27eee00
--- /dev/null
+++ b/test/afl_test_cases/test.md
@@ -0,0 +1,36 @@
+# H1
+
+H2
+--
+
+t ☺
+*b* **em** `c`
+&ge;\&\
+\_e\_
+
+4) I1
+
+5) I2
+ > [l](/u "t")
+ >
+ > - [f]
+ > - ![a](/u "t")
+ >
+ >> <ftp://hh>
+ >> <u@hh>
+
+~~~ l☺
+cb
+~~~
+
+ c1
+ c2
+
+***
+
+<div>
+<b>x</b>
+</div>
+
+[f]: /u "t"
+