summaryrefslogtreecommitdiff
path: root/libfdt
diff options
context:
space:
mode:
author Pierre-Clément Tosi <ptosi@google.com> 2022-09-13 16:58:15 +0100
committer Pierre-Clément Tosi <ptosi@google.com> 2022-09-14 14:58:36 +0100
commit3c28f3e3a1724c288d19f1b1a139cf57bfe1af33 (patch)
treec1b128eabf80616a9f45ece7518acf5b4ec96738 /libfdt
parentcca1ca7b21869b05b334cd81590c9cdf804c8e4a (diff)
libfdt: fdt_path_offset_namelen: Reject empty paths
Make empty paths result in FDT_ERR_BADPATH. Per the specification (v0.4-rc4): > The convention for specifying a device path is: > /node-name-1/node-name-2/node-name-N > > The path to the root node is /. > > A unit address may be omitted if the full path to the > node is unambiguous. Bug: 246465319 Test: libfdt_fuzzer # clusterfuzz/testcase-detail/4530863420604416 Change-Id: I14ab0a074ab994c1f598243d2d5795d2cd9a853a
Diffstat (limited to 'libfdt')
-rw-r--r--libfdt/fdt_ro.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/libfdt/fdt_ro.c b/libfdt/fdt_ro.c
index 9f6c551..e61df25 100644
--- a/libfdt/fdt_ro.c
+++ b/libfdt/fdt_ro.c
@@ -255,6 +255,9 @@ int fdt_path_offset_namelen(const void *fdt, const char *path, int namelen)
FDT_RO_PROBE(fdt);
+ if (namelen < 1)
+ return -FDT_ERR_BADPATH;
+
/* see if we have an alias */
if (*path != '/') {
const char *q = memchr(path, '/', end - p);