mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-24 13:43:28 +00:00
arm: imx: Add function to validate i.MX8 containers
Add a function to abstract the common task of validating i.MX8 container image headers. Signed-off-by: Sean Anderson <seanga2@gmail.com>
This commit is contained in:
parent
d9416cc449
commit
d401e0b264
6 changed files with 15 additions and 5 deletions
|
@ -18,6 +18,9 @@
|
|||
#define CONTAINER_HDR_QSPI_OFFSET SZ_4K
|
||||
#define CONTAINER_HDR_NAND_OFFSET SZ_128M
|
||||
|
||||
#define CONTAINER_HDR_TAG 0x87
|
||||
#define CONTAINER_HDR_VERSION 0
|
||||
|
||||
struct container_hdr {
|
||||
u8 version;
|
||||
u8 length_lsb;
|
||||
|
@ -66,4 +69,10 @@ struct generate_key_blob_hdr {
|
|||
} __packed;
|
||||
|
||||
int get_container_size(ulong addr, u16 *header_length);
|
||||
|
||||
static inline bool valid_container_hdr(struct container_hdr *container)
|
||||
{
|
||||
return container->tag == CONTAINER_HDR_TAG &&
|
||||
container->version == CONTAINER_HDR_VERSION;
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -343,7 +343,7 @@ int authenticate_os_container(ulong addr)
|
|||
}
|
||||
|
||||
phdr = (struct container_hdr *)addr;
|
||||
if (phdr->tag != 0x87 || phdr->version != 0x0) {
|
||||
if (!valid_container_hdr(phdr)) {
|
||||
printf("Error: Wrong container header\n");
|
||||
return -EFAULT;
|
||||
}
|
||||
|
|
|
@ -50,7 +50,7 @@ int get_container_size(ulong addr, u16 *header_length)
|
|||
u32 max_offset = 0, img_end;
|
||||
|
||||
phdr = (struct container_hdr *)addr;
|
||||
if (phdr->tag != 0x87 || phdr->version != 0x0) {
|
||||
if (!valid_container_hdr(phdr)) {
|
||||
debug("Wrong container header\n");
|
||||
return -EFAULT;
|
||||
}
|
||||
|
|
|
@ -146,7 +146,7 @@ int authenticate_os_container(ulong addr)
|
|||
}
|
||||
|
||||
phdr = (struct container_hdr *)addr;
|
||||
if (phdr->tag != 0x87 && phdr->version != 0x0) {
|
||||
if (!valid_container_hdr(phdr)) {
|
||||
printf("Error: Wrong container header\n");
|
||||
return -EFAULT;
|
||||
}
|
||||
|
|
|
@ -85,7 +85,7 @@ static int read_auth_container(struct spl_image_info *spl_image,
|
|||
goto end;
|
||||
}
|
||||
|
||||
if (container->tag != 0x87 && container->version != 0x0) {
|
||||
if (!valid_container_hdr(container)) {
|
||||
log_err("Wrong container header\n");
|
||||
ret = -ENOENT;
|
||||
goto end;
|
||||
|
|
|
@ -202,7 +202,8 @@ static u8 *search_container_header(u8 *p, int size)
|
|||
|
||||
for (i = 0; i < size; i += 4) {
|
||||
hdr = p + i;
|
||||
if (*(hdr + 3) == 0x87 && *hdr == 0 && (*(hdr + 1) != 0 || *(hdr + 2) != 0))
|
||||
if (valid_container_hdr((void *)hdr) &&
|
||||
(*(hdr + 1) != 0 || *(hdr + 2) != 0))
|
||||
return p + i;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue