diff options
author | mtb <mtb0x10x1@gmail.com> | 2024-08-26 23:13:39 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-08-26 14:13:39 -0700 |
commit | 50181145e39304785ccedcd84be9cb7cc428b1f2 (patch) | |
tree | fae4b293735ed04727d16247f01b9fa9e88dae32 /test/lit/validation/function-missing.wast | |
parent | b7af8dac2fe457d47d6b29cabb8327457341bffe (diff) | |
download | binaryen-50181145e39304785ccedcd84be9cb7cc428b1f2.tar.gz binaryen-50181145e39304785ccedcd84be9cb7cc428b1f2.tar.bz2 binaryen-50181145e39304785ccedcd84be9cb7cc428b1f2.zip |
Fix null dereference in FunctionValidator (#6849)
visitBlock() and validateCallParamsAndResult() both assumed they were
running inside a function, but might be called on global code too. Calls
and blocks are invalid in global positions, so we should error there, but
must do so properly without a null deref.
Fixes #6847
Fixes #6848
Diffstat (limited to 'test/lit/validation/function-missing.wast')
-rw-r--r-- | test/lit/validation/function-missing.wast | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/test/lit/validation/function-missing.wast b/test/lit/validation/function-missing.wast new file mode 100644 index 000000000..5510644a7 --- /dev/null +++ b/test/lit/validation/function-missing.wast @@ -0,0 +1,14 @@ +;; Test that we validate functions declaration and usage for globals. + +;; RUN: not wasm-opt %s -all 2>&1 | filecheck %s + +(module + ;; CHECK: function not defined + (global (mut i32) (block)) + + ;; CHECK: function not defined + (global (mut i32) (return_call 0)) + + (func $0 + ) +)
\ No newline at end of file |