Re: [PATCH v3 2/4] pylibfdt: Support setting the name of a node

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]



On Wed, Jun 13, 2018 at 09:44:44PM -0600, Simon Glass wrote:
> Add a method to call fdt_set_name().
> 
> Signed-off-by: Simon Glass <sjg@xxxxxxxxxxxx>

Applied, thanks.

> ---
> 
> 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()

-- 
David Gibson			| I'll have my music baroque, and my code
david AT gibson.dropbear.id.au	| minimalist, thank you.  NOT _the_ _other_
				| _way_ _around_!
http://www.ozlabs.org/~dgibson

Attachment: signature.asc
Description: PGP signature


[Index of Archives]     [Device Tree]     [Device Tree Spec]     [Linux Driver Backports]     [Video for Linux]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux