[PATCH] erofs-utils: fix memory leak when load compress hints file
Gao Xiang
hsiangkao at linux.alibaba.com
Fri Feb 18 18:02:38 AEDT 2022
On Fri, Feb 18, 2022 at 11:11:36AM +0800, Huang Jianan via Linux-erofs wrote:
> Execute fclose before return error.
>
> Signed-off-by: Huang Jianan <huangjianan at oppo.com>
It's actually a file descriptor leakage?
Thanks,
Gao Xiang
> ---
> lib/compress_hints.c | 10 +++++++---
> 1 file changed, 7 insertions(+), 3 deletions(-)
>
> diff --git a/lib/compress_hints.c b/lib/compress_hints.c
> index c3f3d48..c52e2d3 100644
> --- a/lib/compress_hints.c
> +++ b/lib/compress_hints.c
> @@ -88,6 +88,7 @@ int erofs_load_compress_hints(void)
> char buf[PATH_MAX + 100];
> FILE *f;
> unsigned int line, max_pclustersize = 0;
> + int ret = 0;
>
> if (!cfg.c_compress_hints_file)
> return 0;
> @@ -105,7 +106,8 @@ int erofs_load_compress_hints(void)
> if (!pattern || *pattern == '\0') {
> erofs_err("cannot find a match pattern at line %u",
> line);
> - return -EINVAL;
> + ret = -EINVAL;
> + goto out;
> }
> if (pclustersize % EROFS_BLKSIZ) {
> erofs_warn("invalid physical clustersize %u, "
> @@ -119,10 +121,12 @@ int erofs_load_compress_hints(void)
> if (pclustersize > max_pclustersize)
> max_pclustersize = pclustersize;
> }
> - fclose(f);
> +
> if (cfg.c_pclusterblks_max * EROFS_BLKSIZ < max_pclustersize) {
> cfg.c_pclusterblks_max = max_pclustersize / EROFS_BLKSIZ;
> erofs_warn("update max pclusterblks to %u", cfg.c_pclusterblks_max);
> }
> - return 0;
> +out:
> + fclose(f);
> + return ret;
> }
> --
> 2.25.1
More information about the Linux-erofs
mailing list