summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAristo Chen <jj251510319013@gmail.com>2025-07-15 13:03:06 +0000
committerTom Rini <trini@konsulko.com>2025-07-23 13:12:16 -0600
commitedb4bf38688bb232ba0739585693aa94be5246f5 (patch)
tree130805f669ab2ab8db61fed585d944cd9c179ca6
parentf7b03695d46d7301fe78eed0fe8f8df9c08c33a4 (diff)
tools: fit_image: validate existence of default configuration node
When a FIT image declares a default configuration via the 'configurations/default' property, it must reference a valid subnode under the /configurations node. If the named default does not exist, U-Boot will fail to boot the image when no explicit configuration is provided. This patch adds a validation step in mkimage to check that the referenced default configuration node is present. If not, mkimage will print an error and abort. This helps catch malformed or outdated ITS files early at build time instead of deferring failure to runtime. Signed-off-by: Aristo Chen <aristo.chen@canonical.com>
-rw-r--r--tools/fit_image.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/tools/fit_image.c b/tools/fit_image.c
index 8717dc9a3b1..8a1f6c185dd 100644
--- a/tools/fit_image.c
+++ b/tools/fit_image.c
@@ -756,6 +756,8 @@ static int fit_import_data(struct image_tool_params *params, const char *fname)
}
confs = fdt_path_offset(fdt, FIT_CONFS_PATH);
+ const char *default_conf =
+ (char *)fdt_getprop(fdt, confs, FIT_DEFAULT_PROP, NULL);
static const char * const props[] = { FIT_KERNEL_PROP,
FIT_RAMDISK_PROP,
FIT_FDT_PROP,
@@ -764,6 +766,14 @@ static int fit_import_data(struct image_tool_params *params, const char *fname)
FIT_FIRMWARE_PROP,
FIT_SCRIPT_PROP};
+ if (default_conf && fdt_subnode_offset(fdt, confs, default_conf) < 0) {
+ fprintf(stderr,
+ "Error: Default configuration '%s' not found under /configurations\n",
+ default_conf);
+ ret = FDT_ERR_NOTFOUND;
+ goto err_munmap;
+ }
+
fdt_for_each_subnode(node, fdt, confs) {
const char *conf_name = fdt_get_name(fdt, node, NULL);