Stefan Profanter e9a9f576b7 Fuzz: Enable mDNS testing and broadcast | 5 lat temu | |
---|---|---|
.. | ||
fuzz_binary_message_corpus | 6 lat temu | |
fuzz_json | 5 lat temu | |
CMakeLists.txt | 5 lat temu | |
README.md | 5 lat temu | |
check_build.sh | 5 lat temu | |
corpus_generator.c | 5 lat temu | |
custom_memory_manager.c | 5 lat temu | |
custom_memory_manager.h | 5 lat temu | |
fuzz_binary_decode.cc | 5 lat temu | |
fuzz_binary_message.cc | 5 lat temu | |
fuzz_binary_message.options | 6 lat temu | |
fuzz_binary_message_header.dict | 6 lat temu | |
fuzz_json_decode.cc | 5 lat temu | |
fuzz_json_decode_encode.cc | 5 lat temu | |
fuzz_src_ua_util.cc | 5 lat temu | |
fuzz_src_ua_util.options | 6 lat temu | |
fuzz_src_ua_util_endpoints.dict | 6 lat temu | |
generate_corpus.sh | 6 lat temu | |
oss-fuzz-copy.sh | 7 lat temu | |
ua_debug_dump_pkgs_file.c | 5 lat temu |
open62541 is continuously tested with the awesome oss-fuzz project from Google: https://github.com/google/oss-fuzz
Currently tested is processing of binary messages and encoding/decoding of binary encoded data.
You can just execute the script under tests/fuzz/check_build.sh
, which does the following:
# 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
Download the testcase file and store it e.g. in your Download folder.
# 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
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 and then update and merge the corpus.
The script will create two directories: open62541/build_fuzz
and open62541/build_corpus
.
Make sure that these directories are not existing or do not contain any important data.
Run the generate script:
open62541/tests/fuzz/generate_corpus.sh
This script will build all the unit tests, dump the packages and then merge the current corpus with the new packages.
open62541/fuzz/fuzz_binary_message_corpus/generated
Commit the new files and then you can delete the build directories created in step 1.