From: Richard Genoud Date: Tue, 3 Nov 2020 11:11:19 +0000 (+0100) Subject: fs/squashfs: sqfs_probe: fix possible memory leak on error X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=8492bb29c692ee7efadd3cf6acdc43f9f5552c47;p=platform%2Fkernel%2Fu-boot.git fs/squashfs: sqfs_probe: fix possible memory leak on error If SquashFS magic number is invalid, there's a memory leak. Reviewed-by: Joao Marcos Costa Signed-off-by: Richard Genoud [jh80.chung: cherry picked from mainline commit ccd4c08a452b3703ee16ba730a84b7caadcff97a] Signed-off-by: Jaehoon Chung Change-Id: I3be0a354f3407d13902c244580109eb0a9ff71e9 --- diff --git a/fs/squashfs/sqfs.c b/fs/squashfs/sqfs.c index c816cd5..2e63039 100644 --- a/fs/squashfs/sqfs.c +++ b/fs/squashfs/sqfs.c @@ -1093,8 +1093,8 @@ int sqfs_probe(struct blk_desc *fs_dev_desc, struct disk_partition *fs_partition /* Make sure it has a valid SquashFS magic number*/ if (get_unaligned_le32(&sblk->s_magic) != SQFS_MAGIC_NUMBER) { printf("Bad magic number for SquashFS image.\n"); - ctxt.cur_dev = NULL; - return -EINVAL; + ret = -EINVAL; + goto error; } ctxt.sblk = sblk; @@ -1102,12 +1102,16 @@ int sqfs_probe(struct blk_desc *fs_dev_desc, struct disk_partition *fs_partition ret = sqfs_decompressor_init(&ctxt); if (ret) { - ctxt.cur_dev = NULL; - free(ctxt.sblk); - return -EINVAL; + ret = -EINVAL; + goto error; } return 0; +error: + ctxt.cur_dev = NULL; + free(ctxt.sblk); + ctxt.sblk = NULL; + return ret; } static char *sqfs_basename(char *path)