From: Christian Brauner Date: Wed, 15 Apr 2020 11:56:24 +0000 (+0200) Subject: zfs: fix resource leak X-Git-Tag: lxc-5.0.0~451^2~5 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c148bb7d9ff5983a4286a9804affca855aa7defc;p=thirdparty%2Flxc.git zfs: fix resource leak Fixes: Coverity 1461730. Signed-off-by: Christian Brauner --- diff --git a/src/lxc/storage/zfs.c b/src/lxc/storage/zfs.c index 4cc171fd8..ee9e32d0a 100644 --- a/src/lxc/storage/zfs.c +++ b/src/lxc/storage/zfs.c @@ -159,8 +159,8 @@ bool zfs_detect(const char *path) int zfs_mount(struct lxc_storage *bdev) { + __do_free char *mntdata = NULL; unsigned long mntflags = 0; - char *mntdata = NULL; int ret; size_t oldlen, newlen, totallen; char *tmp; @@ -176,7 +176,6 @@ int zfs_mount(struct lxc_storage *bdev) ret = parse_mntopts(bdev->mntopts, &mntflags, &mntdata); if (ret < 0) { ERROR("Failed to parse mount options"); - free(mntdata); return -22; } @@ -221,7 +220,6 @@ int zfs_mount(struct lxc_storage *bdev) tmp = realloc(mntdata, totallen); if (!tmp) { ERROR("Failed to reallocate memory"); - free(mntdata); return -1; } mntdata = tmp; @@ -229,12 +227,10 @@ int zfs_mount(struct lxc_storage *bdev) ret = snprintf((mntdata + oldlen), newlen, ",zfsutil,mntpoint=%s", src); if (ret < 0 || (size_t)ret >= newlen) { ERROR("Failed to create string"); - free(mntdata); return -1; } ret = mount(src, bdev->dest, "zfs", mntflags, mntdata); - free(mntdata); if (ret < 0 && errno != EBUSY) { SYSERROR("Failed to mount \"%s\" on \"%s\"", src, bdev->dest); return -1;