mirror of
https://github.com/dgibson/dtc.git
synced 2026-07-10 13:29:48 -04:00
libfdt: fix UBSAN null pointer in fdt_property()
fdt_property() unconditionally calls memcpy(ptr, val, len) even when len is zero and val is NULL. This is a legitimate calling convention for adding empty FDT properties such as "interrupt-controller", which carry no payload. However, compilers that treat memcpy as nonnull on its pointer arguments will fire UBSAN before observing that len is zero. Guard the memcpy() with a check on len so it is skipped entirely when there is no payload to copy, bringing the code in line with the nonnull contract. Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
This commit is contained in:
parent
2164019f84
commit
6c5e89aa55
1 changed files with 2 additions and 1 deletions
|
|
@ -330,7 +330,8 @@ int fdt_property(void *fdt, const char *name, const void *val, int len)
|
|||
ret = fdt_property_placeholder(fdt, name, len, &ptr);
|
||||
if (ret)
|
||||
return ret;
|
||||
memcpy(ptr, val, len);
|
||||
if (len)
|
||||
memcpy(ptr, val, len);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue