summaryrefslogtreecommitdiffstats
path: root/fuzz/README.rst
diff options
context:
space:
mode:
Diffstat (limited to 'fuzz/README.rst')
-rw-r--r--fuzz/README.rst33
1 files changed, 33 insertions, 0 deletions
diff --git a/fuzz/README.rst b/fuzz/README.rst
new file mode 100644
index 0000000..54ae832
--- /dev/null
+++ b/fuzz/README.rst
@@ -0,0 +1,33 @@
+Fuzzer
+======
+
+This directory contains fuzzer target mainly written to integrate
+nghttp2 into `oss-fuzz <https://github.com/google/oss-fuzz>`_.
+
+fuzz_target.cc contains an entry point of fuzzer. corpus directory
+contains initial data for fuzzer.
+
+The file name of initial data under corpus is the lower-cased hex
+string of SHA-256 hash of its own content.
+
+corpus/h2spec contains input data which was recorded when we ran
+`h2spec <https://github.com/summerwind/h2spec>`_ against nghttpd.
+
+corpus/nghttp contains input data which was recorded when we ran
+nghttp against nghttpd with some varying command line options of
+nghttp.
+
+
+To build fuzz_target.cc, make sure that libnghttp2 is built with
+following compiler/linker flags:
+
+.. code-block:: text
+
+ CPPFLAGS="-fsanitize-coverage=edge -fsanitize=address"
+ LDFLAGS="-fsanitize-coverage=edge -fsanitize=address"
+
+Then, fuzz_target.cc can be built using the following command:
+
+.. code-block:: text
+
+ $ clang++ -fsanitize-coverage=edge -fsanitize=address -I../lib/includes -std=c++11 fuzz_target.cc ../lib/.libs/libnghttp2.a /usr/lib/llvm-3.9/lib/libFuzzer.a -o nghttp2_fuzzer