xref: /optee_os/lib/libutils/isoc/stack_check.c (revision 45507d1093f7b546acdf3060939f61d5c7f19817)
11bb92983SJerome Forissier // SPDX-License-Identifier: BSD-2-Clause
2b0104773SPascal Brand /*
3b0104773SPascal Brand  * Copyright (c) 2014, STMicroelectronics International N.V.
4b0104773SPascal Brand  */
5c211d0a4SVolodymyr Babchuk #include <compiler.h>
6*45507d10SKhoa Hoang #include <trace.h>
7*45507d10SKhoa Hoang 
8*45507d10SKhoa Hoang #if defined(__KERNEL__)
9*45507d10SKhoa Hoang # include <kernel/panic.h>
10*45507d10SKhoa Hoang # define PANIC() panic()
11*45507d10SKhoa Hoang #elif defined(__LDELF__)
12*45507d10SKhoa Hoang # include <ldelf_syscalls.h>
13*45507d10SKhoa Hoang # define PANIC() _ldelf_panic(2)
14*45507d10SKhoa Hoang #else
15*45507d10SKhoa Hoang # include <utee_syscalls.h>
16*45507d10SKhoa Hoang # define PANIC() _utee_panic(TEE_ERROR_OVERFLOW)
17*45507d10SKhoa Hoang #endif
18*45507d10SKhoa Hoang 
19c211d0a4SVolodymyr Babchuk void *__stack_chk_guard __nex_data = (void *)0x00000aff;
20b0104773SPascal Brand 
21b0104773SPascal Brand void __attribute__((noreturn)) __stack_chk_fail(void);
22b0104773SPascal Brand 
__stack_chk_fail(void)23b0104773SPascal Brand void __stack_chk_fail(void)
24b0104773SPascal Brand {
25*45507d10SKhoa Hoang 	EMSG_RAW("stack smashing detected");
26b0104773SPascal Brand 	while (1)
27*45507d10SKhoa Hoang 		PANIC();
28b0104773SPascal Brand }
29b0104773SPascal Brand 
30