summaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authorAnton Ivanov <[email protected]>2026-06-02 19:27:52 +0100
committerTom Rini <[email protected]>2026-06-13 10:42:17 -0600
commitf3d2ff3f5c3f49216b45a30b4b9a315a1b8d2142 (patch)
tree8a3452ce0628247f697acfa6f83fff20a0d67c2b /scripts
parent69f6272b24a26c17a5b6de3b041218ec57239943 (diff)
fdt: Check return value of fdt_get_name() calls
fdt_get_name() can return NULL and set len to a negative error code. fdt_find_regions() does not check for this, leading to a potential NULL pointer dereference and a buffer out-of-bounds write during signature verification of an untrusted FIT. fdt_next_region(), fdt_check_full(), and display_fdt_by_regions() also lack validation. Add NULL checks and propagate the error code from fdt_get_name() to the caller. Signed-off-by: Anton Ivanov <[email protected]> Reviewed-by: Simon Glass <[email protected]>
Diffstat (limited to 'scripts')
-rw-r--r--scripts/dtc/libfdt/fdt_ro.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/scripts/dtc/libfdt/fdt_ro.c b/scripts/dtc/libfdt/fdt_ro.c
index 3e7e26b4398..d7b424c658f 100644
--- a/scripts/dtc/libfdt/fdt_ro.c
+++ b/scripts/dtc/libfdt/fdt_ro.c
@@ -940,6 +940,9 @@ int fdt_check_full(const void *fdt, size_t bufsize)
int len;
name = fdt_get_name(fdt, offset, &len);
+ if (!name)
+ return len;
+
if (*name || len)
return -FDT_ERR_BADLAYOUT;
}