|
Zephyr Project API
3.2.0
A Scalable Open Source RTOS
|
Macros | |
| #define | STACKSIZE (2048 + CONFIG_TEST_EXTRA_STACK_SIZE) |
Functions | |
| void | k_sys_fatal_error_handler (unsigned int reason, const z_arch_esf_t *esf) |
| Fatal error policy handler. More... | |
| void | check_input (const char *name, const char *input) |
| void | print_loop (const char *name) |
| void | alternate_thread (void) |
| K_THREAD_STACK_DEFINE (alt_thread_stack_area,(2048+CONFIG_TEST_EXTRA_STACK_SIZE)) | |
| ZTEST_USER (stackprot, test_stackprot) | |
| test Stack Protector feature using canary More... | |
| ZTEST (stackprot, test_create_alt_thread) | |
| Test optional mechanism to detect stack overflow. More... | |
| ZTEST_SUITE (stackprot, NULL, NULL, NULL, NULL, NULL) | |
Variables | |
| static ZTEST_BMEM int | count |
| static ZTEST_BMEM int | ret = TC_PASS |
| static struct k_thread | alt_thread_data |
| #define STACKSIZE (2048 + CONFIG_TEST_EXTRA_STACK_SIZE) |
| void alternate_thread | ( | void | ) |
This thread passes a long string to check_input function. It terminates due to stack overflow and reports "Stack Check Fail" when stack protection feature is enabled. Hence it will not execute the print_loop function and will not set ret to TC_FAIL.
| void check_input | ( | const char * | name, |
| const char * | input | ||
| ) |
check_input
This function copies the input string to a buffer of 16 characters and prints the name and buffer as a string. If the input string is longer than the buffer, an error condition is detected.
When stack protection feature is enabled (see prj.conf file), the system error handler is invoked and reports a "Stack Check Fail" error. When stack protection feature is not enabled, the system crashes with error like: Trying to execute code outside RAM or ROM.
| K_THREAD_STACK_DEFINE | ( | alt_thread_stack_area | , |
| (2048+CONFIG_TEST_EXTRA_STACK_SIZE) | |||
| ) |
| void print_loop | ( | const char * | name | ) |
print_loop
This function calls check_input 6 times with the input name and a short string, which is printed properly by check_input.
| name | caller identification string |
| ZTEST | ( | stackprot | , |
| test_create_alt_thread | |||
| ) |
Test optional mechanism to detect stack overflow.
Test that the system provides an optional mechanism to detect when supervisor threads overflow stack memory buffer.
| ZTEST_SUITE | ( | stackprot | , |
| NULL | , | ||
| NULL | , | ||
| NULL | , | ||
| NULL | , | ||
| NULL | |||
| ) |
| ZTEST_USER | ( | stackprot | , |
| test_stackprot | |||
| ) |
test Stack Protector feature using canary
This is the test program to test stack protection using canary. The main thread starts a second thread, which generates a stack check failure. By design, the second thread will not complete its execution and will not set ret to TC_FAIL. This is the entry point to the test stack protection feature. It starts the thread that tests stack protection, then prints out a few messages before terminating.
|
static |
|
static |
|
static |