libfdt: Remove superfluous NUL character from overlay symbols
authorMarcus Comstedt <marcus@mc.pp.se>
Fri, 22 May 2020 16:41:36 +0000 (18:41 +0200)
committerSimon Glass <sjg@chromium.org>
Fri, 12 Jun 2020 02:52:11 +0000 (20:52 -0600)
The symbol path already ends with a NUL character (something which is
actually checked by the code) and this NUL is included in
rel_path_len, so there is no need to add a second one.

This change fixes incorrect display in "fdt list /__symbols" after
applying an overlay with symbols.

Signed-off-by: Marcus Comstedt <marcus@mc.pp.se>
Reviewed-by: Simon Glass <sjg@chromium.org>
scripts/dtc/libfdt/fdt_overlay.c

index c090e69..bd75e3d 100644 (file)
@@ -757,7 +757,7 @@ static int overlay_symbol_update(void *fdt, void *fdto)
                           && (memcmp(s, "/__overlay__", len - 1) == 0)) {
                        /* /<fragment-name>/__overlay__ */
                        rel_path = "";
-                       rel_path_len = 0;
+                       rel_path_len = 1; /* Include NUL character */
                } else {
                        /* Symbol refers to something that won't end
                         * up in the target tree */
@@ -794,7 +794,7 @@ static int overlay_symbol_update(void *fdt, void *fdto)
                }
 
                ret = fdt_setprop_placeholder(fdt, root_sym, name,
-                               len + (len > 1) + rel_path_len + 1, &p);
+                               len + (len > 1) + rel_path_len, &p);
                if (ret < 0)
                        return ret;
 
@@ -820,7 +820,6 @@ static int overlay_symbol_update(void *fdt, void *fdto)
 
                buf[len] = '/';
                memcpy(buf + len + 1, rel_path, rel_path_len);
-               buf[len + 1 + rel_path_len] = '\0';
        }
 
        return 0;