47 lines
1.4 KiB
Diff
47 lines
1.4 KiB
Diff
From 8c5bd878a940817088fd7907eb9d503ec98d3437 Mon Sep 17 00:00:00 2001
|
|
From: Mark Wielaard <mark@klomp.org>
|
|
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 <mark@klomp.org>
|
|
---
|
|
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 <mark@klomp.org>
|
|
+
|
|
+ * asm_end.c (text_end): Call fflush instead of fclose.
|
|
+
|
|
2020-01-08 Mark Wielaard <mark@klomp.org>
|
|
|
|
* 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
|
|
|