diff --git a/tests/malformed/README.md b/tests/malformed/README.md new file mode 100644 index 00000000..0a0295c3 --- /dev/null +++ b/tests/malformed/README.md @@ -0,0 +1,18 @@ +# Malformed Test Cases +This folder contains malformed test cases collected from github and peach fuzzer. More cases should be added to here when found. + +# Note +Malformed tests are currently for testing running mode of interpreter including classic interpreter and fast interpreter. + +# Test +Use the provided python script to test a wasm runtime: +``` shell +python malformed_test.py -r "path/to/runtime" +``` + +For example you can test wasmtime with: +``` shell +python malformed_test.py -r "/usr/bin/wasmtime" +``` +If no args is passed to the script, the default runtime `/usr/bin/iwasm` will be used. + diff --git a/tests/malformed/fuzz/1.wasm b/tests/malformed/fuzz/1.wasm new file mode 100644 index 00000000..fe36cbb8 Binary files /dev/null and b/tests/malformed/fuzz/1.wasm differ diff --git a/tests/malformed/fuzz/10.wasm b/tests/malformed/fuzz/10.wasm new file mode 100644 index 00000000..6be7add2 Binary files /dev/null and b/tests/malformed/fuzz/10.wasm differ diff --git a/tests/malformed/fuzz/11.wasm b/tests/malformed/fuzz/11.wasm new file mode 100644 index 00000000..b1a51f3b Binary files /dev/null and b/tests/malformed/fuzz/11.wasm differ diff --git a/tests/malformed/fuzz/12.wasm b/tests/malformed/fuzz/12.wasm new file mode 100644 index 00000000..0b76f475 Binary files /dev/null and b/tests/malformed/fuzz/12.wasm differ diff --git a/tests/malformed/fuzz/2.wasm b/tests/malformed/fuzz/2.wasm new file mode 100644 index 00000000..7997225a Binary files /dev/null and b/tests/malformed/fuzz/2.wasm differ diff --git a/tests/malformed/fuzz/3.wasm b/tests/malformed/fuzz/3.wasm new file mode 100644 index 00000000..7997225a Binary files /dev/null and b/tests/malformed/fuzz/3.wasm differ diff --git a/tests/malformed/fuzz/4.wasm b/tests/malformed/fuzz/4.wasm new file mode 100644 index 00000000..904462f3 Binary files /dev/null and b/tests/malformed/fuzz/4.wasm differ diff --git a/tests/malformed/fuzz/5.wasm b/tests/malformed/fuzz/5.wasm new file mode 100644 index 00000000..fe36cbb8 Binary files /dev/null and b/tests/malformed/fuzz/5.wasm differ diff --git a/tests/malformed/fuzz/6.wasm b/tests/malformed/fuzz/6.wasm new file mode 100644 index 00000000..fb706e8c Binary files /dev/null and b/tests/malformed/fuzz/6.wasm differ diff --git a/tests/malformed/fuzz/7.wasm b/tests/malformed/fuzz/7.wasm new file mode 100644 index 00000000..abf9fd93 Binary files /dev/null and b/tests/malformed/fuzz/7.wasm differ diff --git a/tests/malformed/fuzz/8.wasm b/tests/malformed/fuzz/8.wasm new file mode 100644 index 00000000..d42b35d1 Binary files /dev/null and b/tests/malformed/fuzz/8.wasm differ diff --git a/tests/malformed/fuzz/9.wasm b/tests/malformed/fuzz/9.wasm new file mode 100644 index 00000000..927e8ec9 Binary files /dev/null and b/tests/malformed/fuzz/9.wasm differ diff --git a/tests/malformed/github/PoC47.wasm b/tests/malformed/github/PoC47.wasm new file mode 100644 index 00000000..75bc9b09 Binary files /dev/null and b/tests/malformed/github/PoC47.wasm differ diff --git a/tests/malformed/github/PoC48.wasm b/tests/malformed/github/PoC48.wasm new file mode 100644 index 00000000..adefd4d8 Binary files /dev/null and b/tests/malformed/github/PoC48.wasm differ diff --git a/tests/malformed/github/PoC49.wasm b/tests/malformed/github/PoC49.wasm new file mode 100644 index 00000000..23b2235a Binary files /dev/null and b/tests/malformed/github/PoC49.wasm differ diff --git a/tests/malformed/github/PoC50.wasm b/tests/malformed/github/PoC50.wasm new file mode 100644 index 00000000..275a199f Binary files /dev/null and b/tests/malformed/github/PoC50.wasm differ diff --git a/tests/malformed/github/PoC51.wasm b/tests/malformed/github/PoC51.wasm new file mode 100644 index 00000000..d88c0f58 Binary files /dev/null and b/tests/malformed/github/PoC51.wasm differ diff --git a/tests/malformed/github/PoC52.wasm b/tests/malformed/github/PoC52.wasm new file mode 100644 index 00000000..958a90c1 Binary files /dev/null and b/tests/malformed/github/PoC52.wasm differ diff --git a/tests/malformed/github/PoC53.wasm b/tests/malformed/github/PoC53.wasm new file mode 100644 index 00000000..7672ab25 Binary files /dev/null and b/tests/malformed/github/PoC53.wasm differ diff --git a/tests/malformed/github/PoC54.wasm b/tests/malformed/github/PoC54.wasm new file mode 100644 index 00000000..14dd89fd Binary files /dev/null and b/tests/malformed/github/PoC54.wasm differ diff --git a/tests/malformed/github/PoC55.wasm b/tests/malformed/github/PoC55.wasm new file mode 100644 index 00000000..f1ac704f Binary files /dev/null and b/tests/malformed/github/PoC55.wasm differ diff --git a/tests/malformed/github/PoC56.wasm b/tests/malformed/github/PoC56.wasm new file mode 100644 index 00000000..d57c1009 Binary files /dev/null and b/tests/malformed/github/PoC56.wasm differ diff --git a/tests/malformed/github/PoC57.wasm b/tests/malformed/github/PoC57.wasm new file mode 100644 index 00000000..919febcd Binary files /dev/null and b/tests/malformed/github/PoC57.wasm differ diff --git a/tests/malformed/github/PoC58.wasm b/tests/malformed/github/PoC58.wasm new file mode 100644 index 00000000..0097b275 Binary files /dev/null and b/tests/malformed/github/PoC58.wasm differ diff --git a/tests/malformed/github/PoC59.wasm b/tests/malformed/github/PoC59.wasm new file mode 100644 index 00000000..06394435 Binary files /dev/null and b/tests/malformed/github/PoC59.wasm differ diff --git a/tests/malformed/github/PoC60.wasm b/tests/malformed/github/PoC60.wasm new file mode 100644 index 00000000..ef4b2c9e Binary files /dev/null and b/tests/malformed/github/PoC60.wasm differ diff --git a/tests/malformed/github/PoC61.wasm b/tests/malformed/github/PoC61.wasm new file mode 100644 index 00000000..7f022d3f Binary files /dev/null and b/tests/malformed/github/PoC61.wasm differ diff --git a/tests/malformed/github/PoC62.wasm b/tests/malformed/github/PoC62.wasm new file mode 100644 index 00000000..98b4f5c9 Binary files /dev/null and b/tests/malformed/github/PoC62.wasm differ diff --git a/tests/malformed/github/PoC63.wasm b/tests/malformed/github/PoC63.wasm new file mode 100644 index 00000000..dff7f13e Binary files /dev/null and b/tests/malformed/github/PoC63.wasm differ diff --git a/tests/malformed/github/PoC64.wasm b/tests/malformed/github/PoC64.wasm new file mode 100644 index 00000000..d1cc3c6e Binary files /dev/null and b/tests/malformed/github/PoC64.wasm differ diff --git a/tests/malformed/github/PoC65.wasm b/tests/malformed/github/PoC65.wasm new file mode 100644 index 00000000..380a9b57 Binary files /dev/null and b/tests/malformed/github/PoC65.wasm differ diff --git a/tests/malformed/github/PoC66.wasm b/tests/malformed/github/PoC66.wasm new file mode 100644 index 00000000..aedeea0d Binary files /dev/null and b/tests/malformed/github/PoC66.wasm differ diff --git a/tests/malformed/github/PoC67.wasm b/tests/malformed/github/PoC67.wasm new file mode 100644 index 00000000..5b8ec0ce Binary files /dev/null and b/tests/malformed/github/PoC67.wasm differ diff --git a/tests/malformed/github/PoC68.wasm b/tests/malformed/github/PoC68.wasm new file mode 100644 index 00000000..6ce90702 Binary files /dev/null and b/tests/malformed/github/PoC68.wasm differ diff --git a/tests/malformed/github/PoC69.wasm b/tests/malformed/github/PoC69.wasm new file mode 100644 index 00000000..6e2a2f4d Binary files /dev/null and b/tests/malformed/github/PoC69.wasm differ diff --git a/tests/malformed/github/PoC70.wasm b/tests/malformed/github/PoC70.wasm new file mode 100644 index 00000000..2608ffbf Binary files /dev/null and b/tests/malformed/github/PoC70.wasm differ diff --git a/tests/malformed/github/PoC71.wasm b/tests/malformed/github/PoC71.wasm new file mode 100644 index 00000000..32af40e0 Binary files /dev/null and b/tests/malformed/github/PoC71.wasm differ diff --git a/tests/malformed/github/PoC72.wasm b/tests/malformed/github/PoC72.wasm new file mode 100644 index 00000000..f1450585 Binary files /dev/null and b/tests/malformed/github/PoC72.wasm differ diff --git a/tests/malformed/github/PoC73.wasm b/tests/malformed/github/PoC73.wasm new file mode 100644 index 00000000..e4ae58df Binary files /dev/null and b/tests/malformed/github/PoC73.wasm differ diff --git a/tests/malformed/github/PoC74.wasm b/tests/malformed/github/PoC74.wasm new file mode 100644 index 00000000..7008c4f0 Binary files /dev/null and b/tests/malformed/github/PoC74.wasm differ diff --git a/tests/malformed/github/PoC75.wasm b/tests/malformed/github/PoC75.wasm new file mode 100644 index 00000000..4d15997c Binary files /dev/null and b/tests/malformed/github/PoC75.wasm differ diff --git a/tests/malformed/github/PoC76.wasm b/tests/malformed/github/PoC76.wasm new file mode 100644 index 00000000..7c828e58 Binary files /dev/null and b/tests/malformed/github/PoC76.wasm differ diff --git a/tests/malformed/github/PoC77.wasm b/tests/malformed/github/PoC77.wasm new file mode 100644 index 00000000..855401aa Binary files /dev/null and b/tests/malformed/github/PoC77.wasm differ diff --git a/tests/malformed/github/PoC78.wasm b/tests/malformed/github/PoC78.wasm new file mode 100644 index 00000000..32f83aff Binary files /dev/null and b/tests/malformed/github/PoC78.wasm differ diff --git a/tests/malformed/github/PoC79.wasm b/tests/malformed/github/PoC79.wasm new file mode 100644 index 00000000..07573b90 Binary files /dev/null and b/tests/malformed/github/PoC79.wasm differ diff --git a/tests/malformed/github/PoC80.wasm b/tests/malformed/github/PoC80.wasm new file mode 100644 index 00000000..a2d0142a Binary files /dev/null and b/tests/malformed/github/PoC80.wasm differ diff --git a/tests/malformed/github/PoC81.wasm b/tests/malformed/github/PoC81.wasm new file mode 100644 index 00000000..2f0ac173 Binary files /dev/null and b/tests/malformed/github/PoC81.wasm differ diff --git a/tests/malformed/github/PoC82.wasm b/tests/malformed/github/PoC82.wasm new file mode 100644 index 00000000..0c8988ff Binary files /dev/null and b/tests/malformed/github/PoC82.wasm differ diff --git a/tests/malformed/github/PoC83.wasm b/tests/malformed/github/PoC83.wasm new file mode 100644 index 00000000..3ce15ca8 Binary files /dev/null and b/tests/malformed/github/PoC83.wasm differ diff --git a/tests/malformed/github/PoC84.wasm b/tests/malformed/github/PoC84.wasm new file mode 100644 index 00000000..9c9f90f1 Binary files /dev/null and b/tests/malformed/github/PoC84.wasm differ diff --git a/tests/malformed/malformed_test.py b/tests/malformed/malformed_test.py new file mode 100755 index 00000000..ce931878 --- /dev/null +++ b/tests/malformed/malformed_test.py @@ -0,0 +1,52 @@ +#!/usr/bin/python +# +# Copyright (C) 2019 Intel Corporation. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +# + +import os +import sys +import time +import subprocess +from optparse import OptionParser + + +# You can run different runtime by changing the arg '-r': +# python malformed_test.py -r /path/to/iwasm +# python malformed_test.py -r /path/to/wasmtime +# python malformed_test.py -r "/path/to/wasmer run" + + +optParser = OptionParser() +optParser.add_option("-r", "--run", dest="run", + default="iwasm", + help="specify a runtime [path/to]([iwasm] / wasmtime / wasmer run)") + +(options, args) = optParser.parse_args() +#optParser.usage = "%prog [options]" + +succ_cnt = 0 +fail_cnt = 0 + +test_start = time.time() +for root, dirs, files in os.walk("."): + for file in files: + if len(file.split('.')) < 2 or file.split('.')[1] != 'wasm': + continue + filepath=os.path.join(root, file) + cmd = options.run + " " + filepath + test_out = subprocess.getoutput(cmd) + + if not test_out.startswith("Segmentation fault"): + print("test {:40} ........ [PASSED]".format(filepath)) + succ_cnt += 1 + else: + print("test {:40} ........ [FAILED]".format(filepath)) + print(test_out) + print('\n') + fail_cnt += 1 +test_end = time.time() + +print("\n##################### MALFORMED TEST ########################") +print("run {} test cases in {}ms, {} passed, {} failed" + .format(succ_cnt + fail_cnt, test_end - test_start, succ_cnt, fail_cnt)) diff --git a/tests/wamr-test-suites/test_wamr.sh b/tests/wamr-test-suites/test_wamr.sh index 07ed3bfc..d3d9cb65 100755 --- a/tests/wamr-test-suites/test_wamr.sh +++ b/tests/wamr-test-suites/test_wamr.sh @@ -14,7 +14,7 @@ function help() { echo "test_wamr.sh [options]" echo "-c clean previous test results, not start test" - echo "-s {suite_name} test only one suite (spec|wasi_certification|wamr_compiler)" + echo "-s {suite_name} test only one suite (spec|malformed|wasi_certification|wamr_compiler)" echo "-m set compile target of iwasm(x86_64|x86_32|armv7|armv7_vfp|thumbv7|thumbv7_vfp|" echo " riscv32|riscv32_ilp32f|riscv32_ilp32d|riscv64|" echo " riscv64_lp64f|riscv64_lp64d|aarch64|aarch64_vfp)" @@ -1104,7 +1104,7 @@ if [[ $TEST_CASE_ARR ]];then trigger || (echo "TEST FAILED"; exit 1) else # test all suite, ignore polybench and libsodium because of long time cost - TEST_CASE_ARR=("spec") + TEST_CASE_ARR=("spec" "malformed") : ' if [[ $COLLECT_CODE_COVERAGE == 1 ]];then # add polybench if collecting code coverage data