summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorqiuguorui1 <qiuguorui1@huawei.com>2020-11-30 14:41:25 +0800
committerSimon Horman <horms@verge.net.au>2020-11-30 17:35:36 +0100
commitd4eaff6b84292ca0231505c4aba8cc6b55df79e3 (patch)
tree7ba39ed951a241c76948556b3634f146e243b3c8
parent4149df9005f2cdd2ecf70058dfe7d72f48c3a68c (diff)
downloadkexec-tools-d4eaff6b84292ca0231505c4aba8cc6b55df79e3.tar.gz
zlib: fix resource leak when gzdirect failed
In function zlib_decompress_file, when gzdirect(fp) fails, we should gzclose fp before return. Fixes: d606837b56d46 ("Fix zlib/lzma decompression.") Signed-off-by: qiuguorui1 <qiuguorui1@huawei.com> Signed-off-by: Simon Horman <horms@verge.net.au>
-rw-r--r--kexec/zlib.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/kexec/zlib.c b/kexec/zlib.c
index 9bc340d8..3ed6bd63 100644
--- a/kexec/zlib.c
+++ b/kexec/zlib.c
@@ -60,7 +60,7 @@ char *zlib_decompress_file(const char *filename, off_t *r_size)
gzFile fp;
int errnum;
const char *msg;
- char *buf;
+ char *buf = NULL;
off_t size = 0, allocated;
ssize_t result;
@@ -78,7 +78,7 @@ char *zlib_decompress_file(const char *filename, off_t *r_size)
}
if (gzdirect(fp)) {
/* It's not in gzip format */
- return NULL;
+ goto fail;
}
allocated = 65536;
buf = xmalloc(allocated);