Add a method to call fdt_set_name(). Signed-off-by: Simon Glass <sjg@xxxxxxxxxxxx> --- Changes in v3: - Add one more test (for trailing \0) - Fix the nul check and clarify the 'name' argument type with a comment Changes in v2: - Check for an invalid C string (embedded nul) pylibfdt/libfdt.i | 17 +++++++++++++++++ tests/pylibfdt_tests.py | 15 +++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/pylibfdt/libfdt.i b/pylibfdt/libfdt.i index 8ae6340..93694da 100644 --- a/pylibfdt/libfdt.i +++ b/pylibfdt/libfdt.i @@ -528,6 +528,23 @@ class Fdt: """ return check_err(fdt_parent_offset(self._fdt, nodeoffset), quiet) + def set_name(self, nodeoffset, name, quiet=()): + """Set the name of a node + + Args: + nodeoffset: Node offset of node to update + name: New node name (string without \0) + + Returns: + Error code, or 0 if OK + + Raises: + FdtException if no parent found or other error occurs + """ + if chr(0) in name: + raise ValueError('Property contains embedded nul characters') + return check_err(fdt_set_name(self._fdt, nodeoffset, name), quiet) + def setprop(self, nodeoffset, prop_name, val, quiet=()): """Set the value of a property diff --git a/tests/pylibfdt_tests.py b/tests/pylibfdt_tests.py index 51458ad..833aaa7 100644 --- a/tests/pylibfdt_tests.py +++ b/tests/pylibfdt_tests.py @@ -464,6 +464,21 @@ class PyLibfdtTests(unittest.TestCase): self.assertEquals(TEST_STRING_3, self.fdt.getprop(node, prop).as_str()) + def testSetName(self): + """Test that we can update a node name""" + node = self.fdt.path_offset('/subnode@1') + old_val = self.fdt.get_name(node) + self.fdt.set_name(node, 'test') + self.assertEquals('test', self.fdt.get_name(node)) + + with self.assertRaises(ValueError) as e: + self.fdt.set_name(node, 'some\0name') + self.assertIn('embedded nul', str(e.exception)) + + with self.assertRaises(ValueError) as e: + self.fdt.set_name(node, 'name\0') + self.assertIn('embedded nul', str(e.exception)) + if __name__ == "__main__": unittest.main() -- 2.18.0.rc1.244.gcf134e6275-goog -- To unsubscribe from this list: send the line "unsubscribe devicetree-compiler" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html