If a tree contains an invalid <u32> value as its <phandle> property, mask it with '0' (invalid value) instead of returning it from fdt_get_phandle(). Signed-off-by: Pierre-Clément Tosi <ptosi@xxxxxxxxxx> --- libfdt/fdt_ro.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/libfdt/fdt_ro.c b/libfdt/fdt_ro.c index 9f6c551..7d1da6d 100644 --- a/libfdt/fdt_ro.c +++ b/libfdt/fdt_ro.c @@ -507,6 +507,7 @@ const void *fdt_getprop(const void *fdt, int nodeoffset, uint32_t fdt_get_phandle(const void *fdt, int nodeoffset) { + uint32_t phandle; const fdt32_t *php; int len; @@ -519,7 +520,11 @@ uint32_t fdt_get_phandle(const void *fdt, int nodeoffset) return 0; } - return fdt32_ld_(php); + phandle = fdt32_ld_(php); + if (phandle > (uint32_t)FDT_MAX_PHANDLE) + phandle = 0; + + return phandle; } const char *fdt_get_alias_namelen(const void *fdt, -- 2.37.1.455.g008518b4e5-goog