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 Mike McTernan <mikemcternan@google.com> 2022-09-23 08:16:28 +0000
commitd10c84c4bc78e8ebd8c6ebf70126ad3cb0ba1c46 (patch)
treedcd15991ced4f7d4f29fae62d9a9281bd1af4d24 /libfdt
parent61e10c9c53b170ff8a5612ba4ec79e51d58e5eb3 (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 (cherry picked from commit 3c28f3e3a1724c288d19f1b1a139cf57bfe1af33)
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 08de2cc..3b65f16 100644
--- a/libfdt/fdt_ro.c
+++ b/libfdt/fdt_ro.c
@@ -188,6 +188,9 @@ int fdt_path_offset_namelen(const void *fdt, const char *path, int namelen)
FDT_CHECK_HEADER(fdt);
+ if (namelen < 1)
+ return -FDT_ERR_BADPATH;
+
/* see if we have an alias */
if (*path != '/') {
const char *q = memchr(path, '/', end - p);