From 8b815c7ce565b707fca9e9793bbec9784856f0f9 Mon Sep 17 00:00:00 2001 From: Robert Guetzkow Date: Mon, 16 Nov 2020 13:04:23 +0100 Subject: [PATCH] Fix T81271: Fix crash in BLI_gzopen on Windows Previously the return value of `ufopen` wasn't checked and if it failed, `NULL` was passed into `fclose()` which resulted in a crash. This patch avoids this by returning from `BLI_gzopen` when the file cannot be created. Reviewed By: sebbas, iss Differential Revision: https://developer.blender.org/D9576 --- source/blender/blenlib/intern/fileops.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/source/blender/blenlib/intern/fileops.c b/source/blender/blenlib/intern/fileops.c index 413c2007b1b..bb218995c83 100644 --- a/source/blender/blenlib/intern/fileops.c +++ b/source/blender/blenlib/intern/fileops.c @@ -357,7 +357,12 @@ void *BLI_gzopen(const char *filename, const char *mode) /* xxx Creates file before transcribing the path */ if (mode[0] == 'w') { - fclose(ufopen(filename, "a")); + FILE *file = ufopen(filename, "a"); + if (file == NULL) { + /* File couldn't be opened, e.g. due to permission error. */ + return NULL; + } + fclose(file); } /* temporary #if until we update all libraries to 1.2.7