]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drivers/of: fdt: validate stdout-path properties before parsing them
authorPengpeng Hou <pengpeng@iscas.ac.cn>
Fri, 3 Apr 2026 03:55:29 +0000 (11:55 +0800)
committerRob Herring (Arm) <robh@kernel.org>
Mon, 13 Apr 2026 20:01:26 +0000 (15:01 -0500)
early_init_dt_scan_chosen_stdout() fetches stdout-path and
linux,stdout-path directly from the flat DT and immediately passes the
result to strchrnul(). Flat DT properties are raw firmware-supplied
byte sequences, and this path does not prove that either property is
NUL-terminated within its declared bounds.

Use fdt_stringlist_get() so malformed unterminated stdout-path
properties are rejected before the local parser walks them as C
strings.

Signed-off-by: Pengpeng Hou <pengpeng@iscas.ac.cn>
Link: https://patch.msgid.link/20260403143001.1-dt-fdt-stdout-pengpeng@iscas.ac.cn
Signed-off-by: Rob Herring (Arm) <robh@kernel.org>
drivers/of/fdt.c

index 43a0944ca4623df502c8d005a2ccc390aff11e23..9e4131f0e9b2e7936e07b5581761df4c09b54617 100644 (file)
@@ -954,9 +954,9 @@ int __init early_init_dt_scan_chosen_stdout(void)
        if (offset < 0)
                return -ENOENT;
 
-       p = fdt_getprop(fdt, offset, "stdout-path", &l);
+       p = fdt_stringlist_get(fdt, offset, "stdout-path", 0, &l);
        if (!p)
-               p = fdt_getprop(fdt, offset, "linux,stdout-path", &l);
+               p = fdt_stringlist_get(fdt, offset, "linux,stdout-path", 0, &l);
        if (!p || !l)
                return -ENOENT;