Fix memory leak on error in gzlog.c.

Thank you Adam Richter.
This commit is contained in:
Mark Adler 2019-05-25 22:23:20 -07:00
parent 79baebe50e
commit 0206436615

View File

@ -1,8 +1,8 @@
/* /*
* gzlog.c * gzlog.c
* Copyright (C) 2004, 2008, 2012, 2016 Mark Adler, all rights reserved * Copyright (C) 2004, 2008, 2012, 2016, 2019 Mark Adler, all rights reserved
* For conditions of distribution and use, see copyright notice in gzlog.h * For conditions of distribution and use, see copyright notice in gzlog.h
* version 2.2, 14 Aug 2012 * version 2.3, 25 May 2019
*/ */
/* /*
@ -756,12 +756,14 @@ local int log_recover(struct log *log, int op)
return -2; return -2;
} }
if ((fd = open(log->path, O_RDONLY, 0)) < 0) { if ((fd = open(log->path, O_RDONLY, 0)) < 0) {
free(data);
log_log(log, op, ".add file read failure"); log_log(log, op, ".add file read failure");
return -1; return -1;
} }
ret = (size_t)read(fd, data, len) != len; ret = (size_t)read(fd, data, len) != len;
close(fd); close(fd);
if (ret) { if (ret) {
free(data);
log_log(log, op, ".add file read failure"); log_log(log, op, ".add file read failure");
return -1; return -1;
} }