summaryrefslogtreecommitdiff
path: root/wasm2c/wasm-rt.h
diff options
context:
space:
mode:
Diffstat (limited to 'wasm2c/wasm-rt.h')
-rw-r--r--wasm2c/wasm-rt.h24
1 files changed, 22 insertions, 2 deletions
diff --git a/wasm2c/wasm-rt.h b/wasm2c/wasm-rt.h
index 55b3cce8..bd0cd61d 100644
--- a/wasm2c/wasm-rt.h
+++ b/wasm2c/wasm-rt.h
@@ -166,11 +166,20 @@ extern "C" {
#define WASM_RT_INSTALL_SIGNAL_HANDLER 0
#endif
+/* This macro, if defined, allows the embedder to disable all stack exhaustion
+ * checks. This a non conformant configuration, i.e., this does not respect
+ * Wasm's specification, and may compromise security. Use with caution.
+ */
+#ifndef WASM_RT_NONCONFORMING_UNCHECKED_STACK_EXHAUSTION
+#define WASM_RT_NONCONFORMING_UNCHECKED_STACK_EXHAUSTION 0
+#endif
+
/* We need to detect and trap stack overflows. If we use a signal handler on
* POSIX systems, this can detect call stack overflows. On windows, or platforms
* without a signal handler, we use stack depth counting. */
-#if !defined(WASM_RT_STACK_DEPTH_COUNT) && \
- !defined(WASM_RT_STACK_EXHAUSTION_HANDLER)
+#if !defined(WASM_RT_STACK_DEPTH_COUNT) && \
+ !defined(WASM_RT_STACK_EXHAUSTION_HANDLER) && \
+ !WASM_RT_NONCONFORMING_UNCHECKED_STACK_EXHAUSTION
#if WASM_RT_INSTALL_SIGNAL_HANDLER && !defined(_WIN32)
#define WASM_RT_STACK_EXHAUSTION_HANDLER 1
@@ -188,6 +197,15 @@ extern "C" {
#define WASM_RT_STACK_EXHAUSTION_HANDLER 0
#endif
+#if WASM_RT_NONCONFORMING_UNCHECKED_STACK_EXHAUSTION
+
+#if (WASM_RT_STACK_EXHAUSTION_HANDLER + WASM_RT_STACK_DEPTH_COUNT) != 0
+#error \
+ "Cannot specify WASM_RT_NONCONFORMING_UNCHECKED_STACK_EXHAUSTION along with WASM_RT_STACK_EXHAUSTION_HANDLER or WASM_RT_STACK_DEPTH_COUNT"
+#endif
+
+#else
+
#if (WASM_RT_STACK_EXHAUSTION_HANDLER + WASM_RT_STACK_DEPTH_COUNT) > 1
#error \
"Cannot specify multiple options from WASM_RT_STACK_EXHAUSTION_HANDLER , WASM_RT_STACK_DEPTH_COUNT"
@@ -196,6 +214,8 @@ extern "C" {
"Must specify one of WASM_RT_STACK_EXHAUSTION_HANDLER , WASM_RT_STACK_DEPTH_COUNT"
#endif
+#endif
+
#if WASM_RT_STACK_EXHAUSTION_HANDLER && !WASM_RT_INSTALL_SIGNAL_HANDLER
#error \
"WASM_RT_STACK_EXHAUSTION_HANDLER can only be used if WASM_RT_INSTALL_SIGNAL_HANDLER is enabled"