diff options
author | 2022-09-13 16:58:15 +0100 | |
---|---|---|
committer | 2022-09-23 08:16:28 +0000 | |
commit | d10c84c4bc78e8ebd8c6ebf70126ad3cb0ba1c46 (patch) | |
tree | dcd15991ced4f7d4f29fae62d9a9281bd1af4d24 /libfdt | |
parent | 61e10c9c53b170ff8a5612ba4ec79e51d58e5eb3 (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.c | 3 |
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); |