Browse Source

Fuzz: Add check_build script to verify successful build

Stefan Profanter 5 years ago
parent
commit
a798be865b
3 changed files with 41 additions and 2 deletions
  1. 30 2
      tests/fuzz/README.md
  2. 6 0
      tests/fuzz/check_build.sh
  3. 5 0
      tools/travis/travis_linux_script.sh

+ 30 - 2
tests/fuzz/README.md

@@ -7,12 +7,40 @@ https://github.com/google/oss-fuzz
 Currently tested is processing of binary messages and encoding/decoding of
 Currently tested is processing of binary messages and encoding/decoding of
 binary encoded data.
 binary encoded data.
 
 
-## Status
+Reproduce locally
+-----------------
+
+### Reproduce build failure
+
+You can just execute the script under `tests/fuzz/check_build.sh`, which does the following:
+
+```bash
+# clone oss-fuzz repo
+cd oss-fuzz
+# Change $OPEN62541_DIR to your local checkout of open62541
+python infra/helper.py build_fuzzers --sanitizer address open62541 $OPEN62541_DIR && python infra/helper.py check_build --sanitizer address open62541
+```
+
+### Reproduce issues
+
+Download the testcase file and store it e.g. in your Download folder.
+
+```bash
+# clone oss-fuzz repo
+cd oss-fuzz
+# Change $OPEN62541_DIR to your local checkout of open62541
+# And change $DOWNLOADS to your download location
+python infra/helper.py build_fuzzers --sanitizer address open62541 $OPEN62541_DIR && python infra/helper.py reproduce open62541 fuzz_binary_decode $DOWNLOADS/clusterfuzz-testcase-minimized-fuzz_binary_decode-5686300273803264
+```
+
+Status
+------
 
 
 * [Build status](https://oss-fuzz-build-logs.storage.googleapis.com/index.html)
 * [Build status](https://oss-fuzz-build-logs.storage.googleapis.com/index.html)
 * [Open issues](https://bugs.chromium.org/p/oss-fuzz/issues/list?q=label:Proj-open62541)
 * [Open issues](https://bugs.chromium.org/p/oss-fuzz/issues/list?q=label:Proj-open62541)
 
 
-## Update the corpus
+Update the corpus
+-----------------
 
 
 To update the current corpus used for fuzzing you need to follow these steps.
 To update the current corpus used for fuzzing you need to follow these steps.
 It will execute all the unit tests, dump the received data packages to a directory
 It will execute all the unit tests, dump the received data packages to a directory

+ 6 - 0
tests/fuzz/check_build.sh

@@ -0,0 +1,6 @@
+#!/usr/bin/env bash
+
+set -e
+
+git clone https://github.com/google/oss-fuzz $HOME/oss-fuzz
+python $HOME/oss-fuzz/infra/helper.py build_fuzzers --sanitizer address open62541 $TRAVIS_BUILD_DIR && python $HOME/oss-fuzz/infra/helper.py check_build --sanitizer address open62541

+ 5 - 0
tools/travis/travis_linux_script.sh

@@ -48,6 +48,11 @@ fi
 
 
 # Fuzzer build test
 # Fuzzer build test
 if ! [ -z ${FUZZER+x} ]; then
 if ! [ -z ${FUZZER+x} ]; then
+    # First check if the build is successful
+    ./tests/fuzz/check_build.sh
+    if [ $? -ne 0 ] ; then exit 1 ; fi
+
+
     # Test the corpus generator and use new corpus for fuzz test
     # Test the corpus generator and use new corpus for fuzz test
     ./tests/fuzz/generate_corpus.sh
     ./tests/fuzz/generate_corpus.sh
     if [ $? -ne 0 ] ; then exit 1 ; fi
     if [ $? -ne 0 ] ; then exit 1 ; fi