diff options
author | Benedikt Wildenhain <benedikt.wildenhain@hs-bochum.de> | 2023-08-12 17:26:40 +0200 |
---|---|---|
committer | Lukas Fleischer <lfleischer@calcurse.org> | 2023-11-05 14:14:51 -0500 |
commit | 535088c8096b028d3c0c3ceaf7b49aeec4258fa1 (patch) | |
tree | 4b33e818d4a03eea6357f935a7a10d67da9b3f2a /src | |
parent | 95bb55f68b446e4461f27ef3a74a7d2eda950289 (diff) | |
download | calcurse-535088c8096b028d3c0c3ceaf7b49aeec4258fa1.tar.gz calcurse-535088c8096b028d3c0c3ceaf7b49aeec4258fa1.zip |
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>
Diffstat (limited to 'src')
-rw-r--r-- | src/ical.c | 3 |
1 files changed, 2 insertions, 1 deletions
@@ -214,7 +214,8 @@ static void ical_export_note(FILE *stream, char *name) asprintf(¬e_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(¬e); |