summaryrefslogtreecommitdiff
path: root/test/lit/validation/function-missing.wast
diff options
context:
space:
mode:
authormtb <mtb0x10x1@gmail.com>2024-08-26 23:13:39 +0200
committerGitHub <noreply@github.com>2024-08-26 14:13:39 -0700
commit50181145e39304785ccedcd84be9cb7cc428b1f2 (patch)
treefae4b293735ed04727d16247f01b9fa9e88dae32 /test/lit/validation/function-missing.wast
parentb7af8dac2fe457d47d6b29cabb8327457341bffe (diff)
downloadbinaryen-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.wast14
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