[fdt] Allow for trailing slashes in path lookups

Using fdt_path() to find the root node "/" currently fails, since it
will attempt to find a child node with the empty name "" within the
root node.

Fix by changing fdt_path() to ignore any trailing slashes in a device
tree path.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
This commit is contained in:
Michael Brown
2025-04-14 11:26:49 +01:00
parent 96dfaa7e7a
commit 69af6f0c30

View File

@@ -298,12 +298,16 @@ int fdt_path ( struct fdt *fdt, const char *path, unsigned int *offset ) {
*offset = 0;
/* Traverse tree one path segment at a time */
while ( *tmp ) {
while ( 1 ) {
/* Skip any leading '/' */
while ( *tmp == '/' )
tmp++;
/* Terminate if there are no more path components */
if ( ! *tmp )
break;
/* Find next '/' delimiter and convert to NUL */
del = strchr ( tmp, '/' );
if ( del )
@@ -316,9 +320,12 @@ int fdt_path ( struct fdt *fdt, const char *path, unsigned int *offset ) {
if ( rc != 0 )
return rc;
/* Move to next path component, if any */
while ( *tmp && ( *tmp != '/' ) )
tmp++;
/* Terminate if there are no more delimiters */
if ( ! del )
break;
/* Move to next path component */
tmp = del;
}
DBGC2 ( fdt, "FDT found path \"%s\" at +%#04x\n", path, *offset );