From: David Gibson <da...@gibson.dropbear.id.au>

fdt_getprop_by_offset() doesn't check for errors from fdt_string() - after
all, until very recently it couldn't fail.  Now it can, so we need to
propagate errors up to the caller.

Signed-off-by: David Gibson <da...@gibson.dropbear.id.au>
Tested-by: Alexey Kardashevskiy <a...@ozlabs.ru>
Reviewed-by: Alexey Kardashevskiy <a...@ozlabs.ru>
Reviewed-by: Simon Glass <s...@chromium.org>
---
 cpukit/dtc/libfdt/fdt_ro.c | 14 ++++++++++++--
 1 file changed, 12 insertions(+), 2 deletions(-)

diff --git a/cpukit/dtc/libfdt/fdt_ro.c b/cpukit/dtc/libfdt/fdt_ro.c
index 347aa7bc8d..d4cec0efd1 100644
--- a/cpukit/dtc/libfdt/fdt_ro.c
+++ b/cpukit/dtc/libfdt/fdt_ro.c
@@ -461,8 +461,18 @@ const void *fdt_getprop_by_offset(const void *fdt, int 
offset,
        prop = fdt_get_property_by_offset_(fdt, offset, lenp);
        if (!prop)
                return NULL;
-       if (namep)
-               *namep = fdt_string(fdt, fdt32_to_cpu(prop->nameoff));
+       if (namep) {
+               const char *name;
+               int namelen;
+               name = fdt_get_string(fdt, fdt32_to_cpu(prop->nameoff),
+                                     &namelen);
+               if (!name) {
+                       if (lenp)
+                               *lenp = namelen;
+                       return NULL;
+               }
+               *namep = name;
+       }
 
        /* Handle realignment */
        if (fdt_version(fdt) < 0x10 && (offset + sizeof(*prop)) % 8 &&
-- 
2.13.7

_______________________________________________
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel

Reply via email to