Browse Source

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>
main
David Gibson 8 years ago
parent
commit
69a1bd6ad3
  1. 3
      libfdt/fdt_rw.c

3
libfdt/fdt_rw.c

@ -283,7 +283,8 @@ int fdt_setprop(void *fdt, int nodeoffset, const char *name, @@ -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;
}


Loading…
Cancel
Save