Commit b554e768 authored by nathan-menhorn's avatar nathan-menhorn Committed by Nathan Menhorn
Browse files

Fixed ARM-software/tf-issues#603



Updated optee_utils.c to fix ARM-software/tf-issues#603 related to the
tee-validate-header bug.

Minor updates to the header valid checking logic. It would never make
sense to have less than 1 image to load so this is now checked.

Changed OPTEE_MAX_IMAGE_NUM to OPTEE_MAX_NUM_IMAGES to clarify its
definition. OPTEE_MAX_IMAGE_NUM sounds like an ID assigned to the last
image to load. OPTEE_MAX_NUM_IMAGES sounds like the maximum number of
images to load.
Signed-off-by: default avatarNathan Menhorn <nathan.menhorn@xilinx.com>
parent 9ceda8b9
...@@ -25,14 +25,15 @@ typedef struct optee_image { ...@@ -25,14 +25,15 @@ typedef struct optee_image {
#define OPTEE_PAGER_IMAGE_ID 0 #define OPTEE_PAGER_IMAGE_ID 0
#define OPTEE_PAGED_IMAGE_ID 1 #define OPTEE_PAGED_IMAGE_ID 1
#define OPTEE_MAX_IMAGE_NUM 2
#define OPTEE_MAX_NUM_IMAGES 2u
#define TEE_MAGIC_NUM_OPTEE 0x4554504f #define TEE_MAGIC_NUM_OPTEE 0x4554504f
/* /*
* magic: header magic number. * magic: header magic number.
* version: OPTEE header version: * version: OPTEE header version:
* 1 - not supported * 1 - not supported
* 2 - supported * 2 - supported
* arch: OPTEE os architecture type: 0 - AARCH32, 1 - AARCH64. * arch: OPTEE os architecture type: 0 - AARCH32, 1 - AARCH64.
* flags: unused currently. * flags: unused currently.
* nb_images: number of images. * nb_images: number of images.
...@@ -53,14 +54,20 @@ typedef struct optee_header { ...@@ -53,14 +54,20 @@ typedef struct optee_header {
******************************************************************************/ ******************************************************************************/
static inline int tee_validate_header(optee_header_t *header) static inline int tee_validate_header(optee_header_t *header)
{ {
int valid = 0;
if ((header->magic == TEE_MAGIC_NUM_OPTEE) && if ((header->magic == TEE_MAGIC_NUM_OPTEE) &&
(header->version == 2) && (header->version == 2u) &&
(header->nb_images <= OPTEE_MAX_IMAGE_NUM)) { (header->nb_images > 0u) &&
return 1; (header->nb_images <= OPTEE_MAX_NUM_IMAGES)) {
valid = 1;
} }
WARN("Not a known TEE, use default loading options.\n"); else {
return 0; WARN("Not a known TEE, use default loading options.\n");
}
return valid;
} }
/******************************************************************************* /*******************************************************************************
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment