mirror of
https://github.com/ipxe/ipxe
synced 2025-12-13 15:31:42 +03:00
[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:
@@ -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 );
|
||||
|
||||
Reference in New Issue
Block a user