From c7a20504962e1b4c96e4b3a1119957b3e4875819 Mon Sep 17 00:00:00 2001 From: Harish Mahendrakar Date: Tue, 20 Aug 2019 16:45:32 -0700 Subject: [PATCH] Add README.md for fuzzer Instructions to build fuzzer target are now in README.md Bug: 139761244 Test: Review Change-Id: Ie0eebac0508e45fc952b1e9cf2bb9b2a3df6b475 --- fuzzer/README.md | 69 +++++++++++++++++++++++++++++++++++++++ fuzzer/avc_dec_fuzzer.cpp | 43 ------------------------ 2 files changed, 69 insertions(+), 43 deletions(-) create mode 100644 fuzzer/README.md diff --git a/fuzzer/README.md b/fuzzer/README.md new file mode 100644 index 0000000..a42e8b5 --- /dev/null +++ b/fuzzer/README.md @@ -0,0 +1,69 @@ +# Fuzzer for libavc decoder + +This describes steps to build avc_dec_fuzzer binary. + +## Linux x86/x64 + +### Requirements +- cmake (3.5 or above) +- make +- clang (6.0 or above) + needs to support -fsanitize=fuzzer, -fsanitize=fuzzer-no-link + +### Steps to build +Clone libavc repository +``` +$ git clone https://android.googlesource.com/platform/external/libavc +``` +Create a directory inside libavc and change directory +``` + $ cd libavc + $ mkdir build + $ cd build +``` +Build libavc using cmake +``` + $ CC=clang CXX=clang++ cmake ../ \ + -DSANITIZE=fuzzer-no-link,address,signed-integer-overflow + $ make + ``` +Build the fuzzer +``` + $ clang++ -std=c++11 -fsanitize=fuzzer,address -I. -I../ -I../common \ + -I../decoder -Wl,--start-group ../fuzzer/avc_dec_fuzzer.cpp \ + -o ./avc_dec_fuzzer ./libavcdec.a -Wl,--end-group +``` + +### Steps to run +Create a directory CORPUS_DIR and copy some elementary h264 files to that folder +To run the fuzzer +``` +$ ./avc_dec_fuzzer CORPUS_DIR +``` + +## Android + +### Steps to build +Build the fuzzer +``` + $ SANITIZE_TARGET=address SANITIZE_HOST=address mmma -j$(nproc) \ + external/libavc/fuzzer +``` + +### Steps to run +Create a directory CORPUS_DIR and copy some elementary h264 files to that folder +Push this directory to device. + +To run on device +``` + $ adb sync data + $ adb shell /data/fuzz/avc_dec_fuzzer CORPUS_DIR +``` +To run on host +``` + $ $ANDROID_HOST_OUT/fuzz/avc_dec_fuzzer CORPUS_DIR +``` + +## References: + * http://llvm.org/docs/LibFuzzer.html + * https://github.com/google/oss-fuzz diff --git a/fuzzer/avc_dec_fuzzer.cpp b/fuzzer/avc_dec_fuzzer.cpp index c951d82..3b00175 100644 --- a/fuzzer/avc_dec_fuzzer.cpp +++ b/fuzzer/avc_dec_fuzzer.cpp @@ -17,49 +17,6 @@ ***************************************************************************** * Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore */ -/* - * Fuzzer for libavc decoder - * ========================== - * Requirements - * -------------- - * Requires Clang 6.0 or above (needs to support -fsanitize=fuzzer, - * -fsanitize=fuzzer-no-link) - * - - * Steps to build - * -------------- - * Clone libavc repository - $git clone https://android.googlesource.com/platform/external/libavc - - * Create a directory inside libavc and change directory - $cd libavc - $mkdir avc_dec_fuzzer - $cd avc_dec_fuzzer/ - - * Build libavc using cmake. - $CC=clang CXX=clang++ cmake ../ \ - -DSANITIZE=fuzzer-no-link,address,signed-integer-overflow - - * Build libavcdec - $make -j32 - - * Build avc fuzzer - $ clang++ -std=c++11 -fsanitize=fuzzer,address -I. -I../ \ - -I../common -I../decoder -Wl,--start-group \ - ../fuzzer/avc_dec_fuzzer.cpp -o ./avc_dec_fuzzer \ - ./libavcdec.a -Wl,--end-group - - * create a corpus directory and copy some elementary avc files there. - * Empty corpus directoy also is acceptable, though not recommended - $mkdir CORPUS && cp some-files CORPUS - - * Run fuzzing: - $./avc_dec_fuzzer CORPUS - - * References: - * http://llvm.org/docs/LibFuzzer.html - * https://github.com/google/oss-fuzz - */ #include #include