From: Sean Anderson <seanga2@gmail.com>
To: u-boot@lists.denx.de, Tom Rini <trini@konsulko.com>
Cc: Harald Seiler <hws@denx.de>, Simon Glass <sjg@chromium.org>,
Heinrich Schuchardt <xypron.glpk@gmx.de>,
Sean Anderson <seanga2@gmail.com>,
uboot-imx@nxp.com, Fabio Estevam <festevam@gmail.com>,
Peng Fan <peng.fan@nxp.com>, Stefano Babic <sbabic@denx.de>
Subject: [PATCH v2 07/29] arm: imx: Add function to validate i.MX8 containers
Date: Sat, 14 Oct 2023 16:47:43 -0400 [thread overview]
Message-ID: <20231014204805.439009-8-seanga2@gmail.com> (raw)
In-Reply-To: <20231014204805.439009-1-seanga2@gmail.com>
Add a function to abstract the common task of validating i.MX8 container
image headers.
Signed-off-by: Sean Anderson <seanga2@gmail.com>
---
(no changes since v1)
arch/arm/include/asm/mach-imx/image.h | 9 +++++++++
arch/arm/mach-imx/ele_ahab.c | 2 +-
arch/arm/mach-imx/image-container.c | 2 +-
arch/arm/mach-imx/imx8/ahab.c | 2 +-
arch/arm/mach-imx/parse-container.c | 2 +-
arch/arm/mach-imx/spl_imx_romapi.c | 3 ++-
6 files changed, 15 insertions(+), 5 deletions(-)
diff --git a/arch/arm/include/asm/mach-imx/image.h b/arch/arm/include/asm/mach-imx/image.h
index ee67ca96f4c..54cd684e35d 100644
--- a/arch/arm/include/asm/mach-imx/image.h
+++ b/arch/arm/include/asm/mach-imx/image.h
@@ -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
diff --git a/arch/arm/mach-imx/ele_ahab.c b/arch/arm/mach-imx/ele_ahab.c
index 785b0d6ec3c..6a1ad198f89 100644
--- a/arch/arm/mach-imx/ele_ahab.c
+++ b/arch/arm/mach-imx/ele_ahab.c
@@ -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;
}
diff --git a/arch/arm/mach-imx/image-container.c b/arch/arm/mach-imx/image-container.c
index 5f188ab32d1..eff9e0c4597 100644
--- a/arch/arm/mach-imx/image-container.c
+++ b/arch/arm/mach-imx/image-container.c
@@ -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;
}
diff --git a/arch/arm/mach-imx/imx8/ahab.c b/arch/arm/mach-imx/imx8/ahab.c
index b58b14ca9b4..44ea63584aa 100644
--- a/arch/arm/mach-imx/imx8/ahab.c
+++ b/arch/arm/mach-imx/imx8/ahab.c
@@ -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;
}
diff --git a/arch/arm/mach-imx/parse-container.c b/arch/arm/mach-imx/parse-container.c
index 48cffb3ab4d..d57f25df6dc 100644
--- a/arch/arm/mach-imx/parse-container.c
+++ b/arch/arm/mach-imx/parse-container.c
@@ -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;
diff --git a/arch/arm/mach-imx/spl_imx_romapi.c b/arch/arm/mach-imx/spl_imx_romapi.c
index 4af41699678..b51061b987b 100644
--- a/arch/arm/mach-imx/spl_imx_romapi.c
+++ b/arch/arm/mach-imx/spl_imx_romapi.c
@@ -184,7 +184,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;
}
--
2.37.1
next prev parent reply other threads:[~2023-10-15 8:18 UTC|newest]
Thread overview: 43+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-10-14 20:47 [PATCH v2 00/29] test: spl: Test some load methods Sean Anderson
2023-10-14 20:47 ` [PATCH v2 01/29] spl: legacy: Fix referencing _image_binary_end Sean Anderson
2023-10-14 20:47 ` [PATCH v2 02/29] spl: nor: Don't allocate header on stack Sean Anderson
2023-10-14 20:47 ` [PATCH v2 03/29] spl: fit: Fix entry point for SPL_LOAD_FIT_FULL Sean Anderson
2023-10-14 20:47 ` [PATCH v2 04/29] arm: imx: Fix i.MX8 container load address Sean Anderson
2023-10-14 20:47 ` [PATCH v2 05/29] arm: imx: Add newlines after error messages Sean Anderson
2023-10-14 20:47 ` [PATCH v2 06/29] arm: imx: Use log_err for errors in read_auth_container Sean Anderson
2023-10-14 20:47 ` Sean Anderson [this message]
2023-10-14 20:47 ` [PATCH v2 08/29] arm: imx: Check header before calling spl_load_imx_container Sean Anderson
2023-10-14 20:47 ` [PATCH v2 09/29] Move i.MX8 container image loading support to common/spl Sean Anderson
2023-10-14 20:47 ` [PATCH v2 10/29] spl: Allow enabling SPL_OF_REAL and SPL_OF_PLATDATA at the same time Sean Anderson
2023-10-14 20:47 ` [PATCH v2 11/29] lib: acpi: Fix linking SPL when ACPIGEN is enabled Sean Anderson
2023-10-14 20:47 ` [PATCH v2 12/29] fs: Disable sandbox filesystem in SPL Sean Anderson
2023-10-14 21:14 ` Heinrich Schuchardt
2023-10-14 21:24 ` Sean Anderson
2023-10-14 21:45 ` Simon Glass
2023-10-14 20:47 ` [PATCH v2 13/29] fs: ext4: Fix building ext4 in SPL if write is enabled Sean Anderson
2023-10-14 20:47 ` [PATCH v2 14/29] fs: ext4: Add some defines for testing Sean Anderson
2023-10-14 23:35 ` Simon Glass
2023-10-14 20:47 ` [PATCH v2 15/29] net: Fix compiling SPL when fastboot is enabled Sean Anderson
2023-10-14 20:47 ` [PATCH v2 16/29] net: bootp: Move port numbers to header Sean Anderson
2023-10-14 21:20 ` Heinrich Schuchardt
2023-10-14 21:22 ` Tom Rini
2023-10-14 20:47 ` [PATCH v2 17/29] net: bootp: Fall back to BOOTP from DHCP when unit testing Sean Anderson
2023-10-14 21:22 ` Heinrich Schuchardt
2023-10-14 21:27 ` Sean Anderson
2023-10-15 14:39 ` Simon Glass
2023-10-15 19:20 ` Tom Rini
2023-10-14 20:47 ` [PATCH v2 18/29] spl: Add callbacks to invalidate cached devices Sean Anderson
2023-10-14 20:47 ` [PATCH v2 19/29] spl: Use map_sysmem where appropriate Sean Anderson
2023-10-14 20:47 ` [PATCH v2 20/29] sandbox: Support -T in spl Sean Anderson
2023-10-14 23:35 ` Simon Glass
2023-10-14 20:47 ` [PATCH v2 21/29] test: spl: Split tests up and use some configs Sean Anderson
2023-10-14 20:47 ` [PATCH v2 22/29] test: spl: Fix spl_test_load not failing if fname doesn't exist Sean Anderson
2023-10-14 20:47 ` [PATCH v2 23/29] test: spl: Add functions to create images Sean Anderson
2023-10-14 20:48 ` [PATCH v2 24/29] test: spl: Add functions to create filesystems Sean Anderson
2023-10-14 23:35 ` Simon Glass
2023-10-14 20:48 ` [PATCH v2 25/29] test: spl: Add a test for spl_blk_load_image Sean Anderson
2023-10-14 20:48 ` [PATCH v2 26/29] test: spl: Add a test for the MMC load method Sean Anderson
2023-10-14 20:48 ` [PATCH v2 27/29] test: spl: Add a test for the NET " Sean Anderson
2023-10-14 20:48 ` [PATCH v2 28/29] test: spl: Add a test for the NOR " Sean Anderson
2023-10-14 20:48 ` [PATCH v2 29/29] test: spl: Add a test for the SPI " Sean Anderson
2023-10-18 12:30 ` [PATCH v2 00/29] test: spl: Test some load methods Tom Rini
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20231014204805.439009-8-seanga2@gmail.com \
--to=seanga2@gmail.com \
--cc=festevam@gmail.com \
--cc=hws@denx.de \
--cc=peng.fan@nxp.com \
--cc=sbabic@denx.de \
--cc=sjg@chromium.org \
--cc=trini@konsulko.com \
--cc=u-boot@lists.denx.de \
--cc=uboot-imx@nxp.com \
--cc=xypron.glpk@gmx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox