diff options
author | David Gibson <david@gibson.dropbear.id.au> | 2017-02-24 10:51:05 +1100 |
---|---|---|
committer | David Gibson <david@gibson.dropbear.id.au> | 2017-02-24 10:51:05 +1100 |
commit | 69a1bd6ad3f9272b3db36e6415864a1fb6af4b9d (patch) | |
tree | 214f12516ebb4623e95bbc0d22c97f99d14ade57 | |
parent | acd1b534a5924e1fa2b8c941d1931d78ca327e18 (diff) | |
download | device-tree-compiler-69a1bd6ad3f9272b3db36e6415864a1fb6af4b9d.tar.gz |
libfdt: Remove undefined behaviour setting empty properties
The standard way of setting an empty property using libfdt is:
fdt_setprop(fdt, nodeoffset, propname, NULL, 0);
However, the implementation of this includes an unconditional:
memcpy(prop->data, NULL, 0);
Which although it will be a no-op (which is what we want) on many platforms
is technically undefined behaviour. Correct this, so that when passing
a 0 length, passing a NULL pointer as the value to fdt_setprop() is
definitely safe. This should quiet static checkers which complain about
this.
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
-rw-r--r-- | libfdt/fdt_rw.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/libfdt/fdt_rw.c b/libfdt/fdt_rw.c index 2eed4f5..3fd5847 100644 --- a/libfdt/fdt_rw.c +++ b/libfdt/fdt_rw.c @@ -283,7 +283,8 @@ int fdt_setprop(void *fdt, int nodeoffset, const char *name, if (err) return err; - memcpy(prop->data, val, len); + if (len) + memcpy(prop->data, val, len); return 0; } |