diff options
author | Morten Borup Petersen <morten.petersen@arm.com> | 2019-05-15 11:13:31 +0100 |
---|---|---|
committer | Tushar Khandelwal <tushar.khandelwal@arm.com> | 2019-05-21 10:09:21 +0100 |
commit | 36db7a10e374580ecd0cfe046f52d1909eb9c99d (patch) | |
tree | 95e050a3e8ecdf51059c094027e8a03652c76aec | |
parent | 78ea2f03ddf87b037eb4254acad67f3c218e6c4f (diff) |
add stack protector support for corstone-700 FVP
This commit adds support for generating a semi-random number required for
enabling building TF-A with stack protector support.
TF-A for corstone-700 may now be built using ENABLE_STACK_PROTECTOR=all
Change-Id: Id27150f57e78aab4c38046256ba76eb8272ffa2b
Signed-off-by: Morten Borup Petersen <morten.petersen@arm.com>
-rw-r--r-- | plat/arm/board/corstone700/corstone700_stack_protector.c | 24 | ||||
-rw-r--r-- | plat/arm/board/corstone700/sp_min/sp_min-corstone700.mk | 1 |
2 files changed, 25 insertions, 0 deletions
diff --git a/plat/arm/board/corstone700/corstone700_stack_protector.c b/plat/arm/board/corstone700/corstone700_stack_protector.c new file mode 100644 index 000000000..4023b48b1 --- /dev/null +++ b/plat/arm/board/corstone700/corstone700_stack_protector.c @@ -0,0 +1,24 @@ +/* + * Copyright (c) 2019, ARM Limited and Contributors. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include <stdint.h> + +#include <arch_helpers.h> +#include <plat/common/platform.h> + +#define RANDOM_CANARY_VALUE ((u_register_t) 3288484550995823360ULL) + +u_register_t plat_get_stack_protector_canary(void) +{ + /* + * Ideally, a random number should be returned instead of the + * combination of a timer's value and a compile-time constant. As the + * FVP does not have any random number generator, this is better than + * nothing but not necessarily really secure. + */ + return RANDOM_CANARY_VALUE ^ read_cntpct_el0(); +} + diff --git a/plat/arm/board/corstone700/sp_min/sp_min-corstone700.mk b/plat/arm/board/corstone700/sp_min/sp_min-corstone700.mk index 35ceb6b70..946a216b5 100644 --- a/plat/arm/board/corstone700/sp_min/sp_min-corstone700.mk +++ b/plat/arm/board/corstone700/sp_min/sp_min-corstone700.mk @@ -11,6 +11,7 @@ BL32_SOURCES += drivers/cfi/v2m/v2m_flash.c \ plat/arm/board/corstone700/corstone700_topology.c \ plat/arm/board/corstone700/corstone700_security.c \ plat/arm/board/corstone700/corstone700_plat.c \ + plat/arm/board/corstone700/corstone700_stack_protector.c \ plat/arm/board/corstone700/corstone700_pm.c \ plat/arm/board/corstone700/sp_min/corstone700_sp_min_setup.c \ ${CORSTONE700_CPU_SOURCES} \ |