aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBehdad Esfahbod <behdad@behdad.org>2015-11-05 22:50:52 -0800
committerBehdad Esfahbod <behdad@behdad.org>2015-11-05 22:50:52 -0800
commit9c9ad214af43685b00f6d8493b7807d6607d4e2d (patch)
tree7012adcc34ae0009e46c19e79f30db04681ea91f
parent6e6f82b6f3dde0fc6c3c7d991d9ec6cfff57823d (diff)
downloadharfbuzz_ng-9c9ad214af43685b00f6d8493b7807d6607d4e2d.tar.gz
[fuzzer] Add README
https://github.com/behdad/harfbuzz/issues/139#issuecomment-154202645
-rw-r--r--test/fuzzing/README21
1 files changed, 21 insertions, 0 deletions
diff --git a/test/fuzzing/README b/test/fuzzing/README
new file mode 100644
index 000000000..2e537f637
--- /dev/null
+++ b/test/fuzzing/README
@@ -0,0 +1,21 @@
+In order to build the fuzzer one needs to build HarfBuzz and
+harfbuzz/test/fuzzing/hb-fuzzer.cc with:
+ - Using the most recent Clang
+ - With -fsanitize=address (or =undefined, or a combination)
+ - With -fsanitize-coverage=edge[,8bit-counters,trace-cmp]
+ - With various defines that limit worst case exponential behavior:
+ * -DHB_MAX_NESTING_LEVEL=3
+ - link against libFuzzer
+
+To run the fuzzer one needs to first obtain a test corpus as a directory
+containing interesting fonts. A good starting point is inside
+harfbuzz/test/shaping/fonts/fonts/.
+Then, run the fuzzer like this:
+ ./hb-fuzzer -max_len=2048 CORPUS_DIR
+Where max_len specifies the maximal length of font files to handle.
+The smaller the faster.
+
+For more details consult the following locations:
+ - http://llvm.org/docs/LibFuzzer.html or
+ - https://github.com/google/libfuzzer-bot/tree/master/harfbuzz
+ - https://github.com/behdad/harfbuzz/issues/139