From 535088c8096b028d3c0c3ceaf7b49aeec4258fa1 Mon Sep 17 00:00:00 2001
From: Benedikt Wildenhain <benedikt.wildenhain@hs-bochum.de>
Date: Sat, 12 Aug 2023 17:26:40 +0200
Subject: Fix segmentation fault when exporting ical file

If a note file gets accidently deleted this leads to ical_export_note
trying to execute fclose(NULL) which leads to a segmentation fault on
current Debian GNU/Linux using libc6 (according to fclose's manpage, the
behaviour is undefined in this case).

The fix tests whether fopen returned a non-NULL-pointer before trying to
close it.

Signed-off-by: Lukas Fleischer <lfleischer@calcurse.org>
---
 src/ical.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

(limited to 'src')

diff --git a/src/ical.c b/src/ical.c
index 4a7738e..6d2d8d2 100644
--- a/src/ical.c
+++ b/src/ical.c
@@ -214,7 +214,8 @@ static void ical_export_note(FILE *stream, char *name)
 
 	asprintf(&note_file, "%s/%s", path_notes, name);
 	if (!(fp = fopen(note_file, "r")) || ungetc(getc(fp), fp) == EOF) {
-		fclose(fp);
+		if (fp)
+			fclose(fp);
 		return;
 	}
 	string_init(&note);
-- 
cgit v1.2.3-70-g09d2