mail archive of the barebox mailing list
 help / color / mirror / Atom feed
* [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

* Re: [PATCH] FIP: don't free the buffer twice when parsing fails
  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
  0 siblings, 0 replies; 2+ messages in thread
From: Sascha Hauer @ 2026-11-09  9:07 UTC (permalink / raw)
  To: barebox, Ahmad Fatoum


On Sun, 08 Nov 2026 21:15:23 +0100, Ahmad Fatoum wrote:
> 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
> 
> [...]

Applied, thanks!

[1/1] FIP: don't free the buffer twice when parsing fails
      https://git.pengutronix.de/cgit/barebox/commit/?id=db380db7a860 (link may not be stable)

Best regards,
-- 
Sascha Hauer <s.hauer@pengutronix.de>




^ 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