Ver código fonte

Add malformed test cases (#3459)

Zhang, Yi 1 ano atrás
pai
commit
591a20b917
53 arquivos alterados com 72 adições e 2 exclusões
  1. 18 0
      tests/malformed/README.md
  2. BIN
      tests/malformed/fuzz/1.wasm
  3. BIN
      tests/malformed/fuzz/10.wasm
  4. BIN
      tests/malformed/fuzz/11.wasm
  5. BIN
      tests/malformed/fuzz/12.wasm
  6. BIN
      tests/malformed/fuzz/2.wasm
  7. BIN
      tests/malformed/fuzz/3.wasm
  8. BIN
      tests/malformed/fuzz/4.wasm
  9. BIN
      tests/malformed/fuzz/5.wasm
  10. BIN
      tests/malformed/fuzz/6.wasm
  11. BIN
      tests/malformed/fuzz/7.wasm
  12. BIN
      tests/malformed/fuzz/8.wasm
  13. BIN
      tests/malformed/fuzz/9.wasm
  14. BIN
      tests/malformed/github/PoC47.wasm
  15. BIN
      tests/malformed/github/PoC48.wasm
  16. BIN
      tests/malformed/github/PoC49.wasm
  17. BIN
      tests/malformed/github/PoC50.wasm
  18. BIN
      tests/malformed/github/PoC51.wasm
  19. BIN
      tests/malformed/github/PoC52.wasm
  20. BIN
      tests/malformed/github/PoC53.wasm
  21. BIN
      tests/malformed/github/PoC54.wasm
  22. BIN
      tests/malformed/github/PoC55.wasm
  23. BIN
      tests/malformed/github/PoC56.wasm
  24. BIN
      tests/malformed/github/PoC57.wasm
  25. BIN
      tests/malformed/github/PoC58.wasm
  26. BIN
      tests/malformed/github/PoC59.wasm
  27. BIN
      tests/malformed/github/PoC60.wasm
  28. BIN
      tests/malformed/github/PoC61.wasm
  29. BIN
      tests/malformed/github/PoC62.wasm
  30. BIN
      tests/malformed/github/PoC63.wasm
  31. BIN
      tests/malformed/github/PoC64.wasm
  32. BIN
      tests/malformed/github/PoC65.wasm
  33. BIN
      tests/malformed/github/PoC66.wasm
  34. BIN
      tests/malformed/github/PoC67.wasm
  35. BIN
      tests/malformed/github/PoC68.wasm
  36. BIN
      tests/malformed/github/PoC69.wasm
  37. BIN
      tests/malformed/github/PoC70.wasm
  38. BIN
      tests/malformed/github/PoC71.wasm
  39. BIN
      tests/malformed/github/PoC72.wasm
  40. BIN
      tests/malformed/github/PoC73.wasm
  41. BIN
      tests/malformed/github/PoC74.wasm
  42. BIN
      tests/malformed/github/PoC75.wasm
  43. BIN
      tests/malformed/github/PoC76.wasm
  44. BIN
      tests/malformed/github/PoC77.wasm
  45. BIN
      tests/malformed/github/PoC78.wasm
  46. BIN
      tests/malformed/github/PoC79.wasm
  47. BIN
      tests/malformed/github/PoC80.wasm
  48. BIN
      tests/malformed/github/PoC81.wasm
  49. BIN
      tests/malformed/github/PoC82.wasm
  50. BIN
      tests/malformed/github/PoC83.wasm
  51. BIN
      tests/malformed/github/PoC84.wasm
  52. 52 0
      tests/malformed/malformed_test.py
  53. 2 2
      tests/wamr-test-suites/test_wamr.sh

+ 18 - 0
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.
+

BIN
tests/malformed/fuzz/1.wasm


BIN
tests/malformed/fuzz/10.wasm


BIN
tests/malformed/fuzz/11.wasm


BIN
tests/malformed/fuzz/12.wasm


BIN
tests/malformed/fuzz/2.wasm


BIN
tests/malformed/fuzz/3.wasm


BIN
tests/malformed/fuzz/4.wasm


BIN
tests/malformed/fuzz/5.wasm


BIN
tests/malformed/fuzz/6.wasm


BIN
tests/malformed/fuzz/7.wasm


BIN
tests/malformed/fuzz/8.wasm


BIN
tests/malformed/fuzz/9.wasm


BIN
tests/malformed/github/PoC47.wasm


BIN
tests/malformed/github/PoC48.wasm


BIN
tests/malformed/github/PoC49.wasm


BIN
tests/malformed/github/PoC50.wasm


BIN
tests/malformed/github/PoC51.wasm


BIN
tests/malformed/github/PoC52.wasm


BIN
tests/malformed/github/PoC53.wasm


BIN
tests/malformed/github/PoC54.wasm


BIN
tests/malformed/github/PoC55.wasm


BIN
tests/malformed/github/PoC56.wasm


BIN
tests/malformed/github/PoC57.wasm


BIN
tests/malformed/github/PoC58.wasm


BIN
tests/malformed/github/PoC59.wasm


BIN
tests/malformed/github/PoC60.wasm


BIN
tests/malformed/github/PoC61.wasm


BIN
tests/malformed/github/PoC62.wasm


BIN
tests/malformed/github/PoC63.wasm


BIN
tests/malformed/github/PoC64.wasm


BIN
tests/malformed/github/PoC65.wasm


BIN
tests/malformed/github/PoC66.wasm


BIN
tests/malformed/github/PoC67.wasm


BIN
tests/malformed/github/PoC68.wasm


BIN
tests/malformed/github/PoC69.wasm


BIN
tests/malformed/github/PoC70.wasm


BIN
tests/malformed/github/PoC71.wasm


BIN
tests/malformed/github/PoC72.wasm


BIN
tests/malformed/github/PoC73.wasm


BIN
tests/malformed/github/PoC74.wasm


BIN
tests/malformed/github/PoC75.wasm


BIN
tests/malformed/github/PoC76.wasm


BIN
tests/malformed/github/PoC77.wasm


BIN
tests/malformed/github/PoC78.wasm


BIN
tests/malformed/github/PoC79.wasm


BIN
tests/malformed/github/PoC80.wasm


BIN
tests/malformed/github/PoC81.wasm


BIN
tests/malformed/github/PoC82.wasm


BIN
tests/malformed/github/PoC83.wasm


BIN
tests/malformed/github/PoC84.wasm


+ 52 - 0
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))

+ 2 - 2
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