[PATCH] of: fdt: Add root name checks during unflattening

Sascha Hauer s.hauer at pengutronix.de
Tue Feb 23 03:52:49 EST 2021


In a valid dtb the root node must have an empty name. Also, every other
node name must be non empty. Add additional checks for this for better
protection against invalid dtbs.

Signed-off-by: Sascha Hauer <s.hauer at pengutronix.de>
---
 drivers/of/fdt.c | 15 +++++++++++++--
 1 file changed, 13 insertions(+), 2 deletions(-)

diff --git a/drivers/of/fdt.c b/drivers/of/fdt.c
index a31e2c348a..d98913e54a 100644
--- a/drivers/of/fdt.c
+++ b/drivers/of/fdt.c
@@ -184,10 +184,21 @@ static struct device_node *__of_unflatten_dtb(const void *infdt, bool constprops
 				goto err;
 			}
 
-			if (!node)
+			if (!node) {
+				/* The root node must have an empty name */
+				if (*pathp) {
+					ret = -EINVAL;
+					goto err;
+				}
 				node = root;
-			else
+			} else {
+				/* Only the root node may have an empty name */
+				if (!*pathp) {
+					ret = -EINVAL;
+					goto err;
+				}
 				node = of_new_node(node, pathp);
+			}
 
 			dt_struct = dt_struct_advance(&f, dt_struct,
 					sizeof(struct fdt_node_header) + len + 1);
-- 
2.29.2




More information about the barebox mailing list