瀏覽代碼

Fuzz: Add check_build script to verify successful build

Stefan Profanter 5 年之前
父節點
當前提交
a798be865b
共有 3 個文件被更改,包括 41 次插入2 次删除
  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
 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)
 * [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.
 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
 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
     ./tests/fuzz/generate_corpus.sh
     if [ $? -ne 0 ] ; then exit 1 ; fi