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>
*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 )
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 );