[PATCH 1/3] bootstd: rauc: Fix potential memory leak

Martin Schwan m.schwan at phytec.de
Mon Jul 14 15:30:08 CEST 2025


Fix a potential memory leak, by checking the return value of realloc
first, before assigning it to the private list of slots.

Signed-off-by: Martin Schwan <m.schwan at phytec.de>
---
 boot/bootmeth_rauc.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/boot/bootmeth_rauc.c b/boot/bootmeth_rauc.c
index fc60e6e355dabef4d58bf1203997b41d99c536f9..6abbd25704bdf218bb0b3a02306993584088d2c7 100644
--- a/boot/bootmeth_rauc.c
+++ b/boot/bootmeth_rauc.c
@@ -168,13 +168,17 @@ static int distro_rauc_read_bootflow(struct udevice *dev, struct bootflow *bflow
 	     (slot = strsep(&boot_order_copy, " "));
 	     i++) {
 		struct distro_rauc_slot *s;
+		struct distro_rauc_slot **new_slots;
 
 		s = calloc(1, sizeof(struct distro_rauc_slot));
 		s->name = strdup(slot);
 		s->boot_part = simple_strtoul(strsep(&parts, ","), NULL, 10);
 		s->root_part = simple_strtoul(strsep(&parts, ","), NULL, 10);
-		priv->slots = realloc(priv->slots, (i + 1) *
-				      sizeof(struct distro_rauc_slot));
+		new_slots = realloc(priv->slots, (i + 1) *
+				    sizeof(struct distro_rauc_slot));
+		if (!new_slots)
+			return log_msg_ret("buf", -ENOMEM);
+		priv->slots = new_slots;
 		priv->slots[i - 1] = s;
 		priv->slots[i]->name = NULL;
 	}

-- 
2.50.0



More information about the U-Boot mailing list