Răsfoiți Sursa

dtoc: Fix Fdt.GetNode() to handle a missing node

At present the algortihm is not correct since it will return the root node
if the requested node is not found and there are no slashes in the
requested node name. Fix this and add a test.

Signed-off-by: Simon Glass <sjg@chromium.org>
Simon Glass 6 ani în urmă
părinte
comite
b9066ffc13
2 a modificat fișierele cu 7 adăugiri și 1 ștergeri
  1. 4 1
      tools/dtoc/fdt.py
  2. 3 0
      tools/dtoc/test_fdt.py

+ 4 - 1
tools/dtoc/fdt.py

@@ -318,7 +318,10 @@ class Fdt:
             Node object, or None if not found
         """
         node = self._root
-        for part in path.split('/')[1:]:
+        parts = path.split('/')
+        if len(parts) < 2:
+            return None
+        for part in parts[1:]:
             node = node._FindNode(part)
             if not node:
                 return None

+ 3 - 0
tools/dtoc/test_fdt.py

@@ -205,6 +205,9 @@ class TestProp(unittest.TestCase):
         self.node = self.dtb.GetNode('/spl-test')
         self.fdt = self.dtb.GetFdtObj()
 
+    def testMissingNode(self):
+        self.assertEqual(None, self.dtb.GetNode('missing'))
+
     def testPhandle(self):
         dtb = fdt.FdtScan('tools/dtoc/dtoc_test_phandle.dts')
         node = dtb.GetNode('/phandle-source')