@@ -166,11 +166,20 @@ extern "C" {
166
166
#define WASM_RT_INSTALL_SIGNAL_HANDLER 0
167
167
#endif
168
168
169
+ /* This macro, if defined, allows the embedder to disable all stack exhaustion
170
+ * checks. This a non conformant configuration, i.e., this does not respect
171
+ * Wasm's specification, and may compromise security. Use with caution.
172
+ */
173
+ #ifndef WASM_RT_NONCONFORMING_UNCHECKED_STACK_EXHAUSTION
174
+ #define WASM_RT_NONCONFORMING_UNCHECKED_STACK_EXHAUSTION 0
175
+ #endif
176
+
169
177
/* We need to detect and trap stack overflows. If we use a signal handler on
170
178
* POSIX systems, this can detect call stack overflows. On windows, or platforms
171
179
* without a signal handler, we use stack depth counting. */
172
- #if !defined(WASM_RT_STACK_DEPTH_COUNT ) && \
173
- !defined(WASM_RT_STACK_EXHAUSTION_HANDLER )
180
+ #if !defined(WASM_RT_STACK_DEPTH_COUNT ) && \
181
+ !defined(WASM_RT_STACK_EXHAUSTION_HANDLER ) && \
182
+ !WASM_RT_NONCONFORMING_UNCHECKED_STACK_EXHAUSTION
174
183
175
184
#if WASM_RT_INSTALL_SIGNAL_HANDLER && !defined(_WIN32 )
176
185
#define WASM_RT_STACK_EXHAUSTION_HANDLER 1
@@ -188,6 +197,15 @@ extern "C" {
188
197
#define WASM_RT_STACK_EXHAUSTION_HANDLER 0
189
198
#endif
190
199
200
+ #if WASM_RT_NONCONFORMING_UNCHECKED_STACK_EXHAUSTION
201
+
202
+ #if (WASM_RT_STACK_EXHAUSTION_HANDLER + WASM_RT_STACK_DEPTH_COUNT ) != 0
203
+ #error \
204
+ "Cannot specify WASM_RT_NONCONFORMING_UNCHECKED_STACK_EXHAUSTION along with WASM_RT_STACK_EXHAUSTION_HANDLER or WASM_RT_STACK_DEPTH_COUNT"
205
+ #endif
206
+
207
+ #else
208
+
191
209
#if (WASM_RT_STACK_EXHAUSTION_HANDLER + WASM_RT_STACK_DEPTH_COUNT ) > 1
192
210
#error \
193
211
"Cannot specify multiple options from WASM_RT_STACK_EXHAUSTION_HANDLER , WASM_RT_STACK_DEPTH_COUNT"
@@ -196,6 +214,8 @@ extern "C" {
196
214
"Must specify one of WASM_RT_STACK_EXHAUSTION_HANDLER , WASM_RT_STACK_DEPTH_COUNT"
197
215
#endif
198
216
217
+ #endif
218
+
199
219
#if WASM_RT_STACK_EXHAUSTION_HANDLER && !WASM_RT_INSTALL_SIGNAL_HANDLER
200
220
#error \
201
221
"WASM_RT_STACK_EXHAUSTION_HANDLER can only be used if WASM_RT_INSTALL_SIGNAL_HANDLER is enabled"
0 commit comments