* [PATCH] FIP: don't free the buffer twice when parsing fails
@ 2026-11-08 20:15 Ahmad Fatoum
2026-11-09 9:07 ` Sascha Hauer
0 siblings, 1 reply; 2+ messages in thread
From: Ahmad Fatoum @ 2026-11-08 20:15 UTC (permalink / raw)
To: barebox; +Cc: Ahmad Fatoum
fip_do_parse_buf() hands the buffer to the fip_state before it checks
anything, so fip_free() frees it. fip_parse() freed it on a parse error
as well, and fiptool and the bootm handler call fip_free() afterwards,
which trips over the double free:
!block_is_free(block) && "block already marked as free"common/tlsf.c 1069
Let's leave freeing the buffer to fip_free().
Fixes: 47d995141515 ("fip: fix wrong function call")
Assisted-by: Claude:opus-5.5
Signed-off-by: Ahmad Fatoum <a.fatoum@barebox.org>
---
lib/fip.c | 7 +------
1 file changed, 1 insertion(+), 6 deletions(-)
diff --git a/lib/fip.c b/lib/fip.c
index 9470aa5d3398..7aca217532c5 100644
--- a/lib/fip.c
+++ b/lib/fip.c
@@ -277,12 +277,7 @@ int fip_parse(struct fip_state *fip,
return ret;
}
- ret = fip_do_parse_buf(fip, buf, size, toc_header_out);
-
- if (ret)
- free(buf);
-
- return ret;
+ return fip_do_parse_buf(fip, buf, size, toc_header_out);
}
static struct fip_image *fip_read_image_from_file(const uuid_t *uuid, const char *filename)
--
2.47.3
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2026-11-09 10:33 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-11-08 20:15 [PATCH] FIP: don't free the buffer twice when parsing fails Ahmad Fatoum
2026-11-09 9:07 ` Sascha Hauer
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox