From 8c5bd878a940817088fd7907eb9d503ec98d3437 Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Sun, 26 Apr 2020 01:20:57 +0200 Subject: [PATCH 2/5] libasm: Fix double fclose in asm_end. GCC10 -fanalyzer found a double fclose in asm_end. asm_end can call text_end, which calls fclose and checks for errors, then asm_end calls __libasm_finictx which can call fclose again (but doesn't check for errors). Call fflush in text_end instead. fflush will generate the same error fclose would if something went wrong writing out the file. Signed-off-by: Mark Wielaard --- libasm/ChangeLog | 4 ++++ libasm/asm_end.c | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/libasm/ChangeLog b/libasm/ChangeLog index 7b0d3df..2c092ab 100644 --- a/libasm/ChangeLog +++ b/libasm/ChangeLog @@ -1,3 +1,7 @@ +2020-04-25 Mark Wielaard + + * asm_end.c (text_end): Call fflush instead of fclose. + 2020-01-08 Mark Wielaard * libasm.h: Don't include libebl.h. Define an opaque Ebl handle. diff --git a/libasm/asm_end.c b/libasm/asm_end.c index 99e9501..3b8582f 100644 --- a/libasm/asm_end.c +++ b/libasm/asm_end.c @@ -47,7 +47,7 @@ static int text_end (AsmCtx_t *ctx __attribute__ ((unused))) { - if (fclose (ctx->out.file) != 0) + if (fflush (ctx->out.file) != 0) { __libasm_seterrno (ASM_E_IOERROR); return -1; -- 1.8.3.1