|
|
26ba25 |
From de0616c738537b21828f572c6c679ad4b290b81e Mon Sep 17 00:00:00 2001
|
|
|
26ba25 |
From: Kevin Wolf <kwolf@redhat.com>
|
|
|
26ba25 |
Date: Tue, 26 Jun 2018 09:47:44 +0200
|
|
|
26ba25 |
Subject: [PATCH 076/268] sheepdog: Fix sd_co_create_opts() memory leaks
|
|
|
26ba25 |
|
|
|
26ba25 |
RH-Author: Kevin Wolf <kwolf@redhat.com>
|
|
|
26ba25 |
Message-id: <20180626094856.6924-2-kwolf@redhat.com>
|
|
|
26ba25 |
Patchwork-id: 81074
|
|
|
26ba25 |
O-Subject: [RHV-7.6 qemu-kvm-rhev PATCH v2 01/73] sheepdog: Fix sd_co_create_opts() memory leaks
|
|
|
26ba25 |
Bugzilla: 1513543
|
|
|
26ba25 |
RH-Acked-by: Jeffrey Cody <jcody@redhat.com>
|
|
|
26ba25 |
RH-Acked-by: Max Reitz <mreitz@redhat.com>
|
|
|
26ba25 |
RH-Acked-by: Fam Zheng <famz@redhat.com>
|
|
|
26ba25 |
|
|
|
26ba25 |
Both the option string for the 'redundancy' option and the
|
|
|
26ba25 |
SheepdogRedundancy object that is created accordingly could be leaked in
|
|
|
26ba25 |
error paths. This fixes the memory leaks.
|
|
|
26ba25 |
|
|
|
26ba25 |
Reported by Coverity (CID 1390614 and 1390641).
|
|
|
26ba25 |
|
|
|
26ba25 |
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
|
|
|
26ba25 |
Message-id: 20180503153509.22223-1-kwolf@redhat.com
|
|
|
26ba25 |
Reviewed-by: Jeff Cody <jcody@redhat.com>
|
|
|
26ba25 |
Signed-off-by: Jeff Cody <jcody@redhat.com>
|
|
|
26ba25 |
(cherry picked from commit a2cb9239b7610ffb00f9ced5cd7640d40b0e1ccf)
|
|
|
26ba25 |
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
|
|
|
26ba25 |
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
|
|
|
26ba25 |
---
|
|
|
26ba25 |
block/sheepdog.c | 4 +++-
|
|
|
26ba25 |
1 file changed, 3 insertions(+), 1 deletion(-)
|
|
|
26ba25 |
|
|
|
26ba25 |
diff --git a/block/sheepdog.c b/block/sheepdog.c
|
|
|
26ba25 |
index d1c9bf5..933880c 100644
|
|
|
26ba25 |
--- a/block/sheepdog.c
|
|
|
26ba25 |
+++ b/block/sheepdog.c
|
|
|
26ba25 |
@@ -1977,6 +1977,7 @@ static SheepdogRedundancy *parse_redundancy_str(const char *opt)
|
|
|
26ba25 |
} else {
|
|
|
26ba25 |
ret = qemu_strtol(n2, NULL, 10, &parity);
|
|
|
26ba25 |
if (ret < 0) {
|
|
|
26ba25 |
+ g_free(redundancy);
|
|
|
26ba25 |
return NULL;
|
|
|
26ba25 |
}
|
|
|
26ba25 |
|
|
|
26ba25 |
@@ -2172,7 +2173,7 @@ static int coroutine_fn sd_co_create_opts(const char *filename, QemuOpts *opts,
|
|
|
26ba25 |
BlockdevCreateOptions *create_options = NULL;
|
|
|
26ba25 |
QDict *qdict, *location_qdict;
|
|
|
26ba25 |
Visitor *v;
|
|
|
26ba25 |
- const char *redundancy;
|
|
|
26ba25 |
+ char *redundancy;
|
|
|
26ba25 |
Error *local_err = NULL;
|
|
|
26ba25 |
int ret;
|
|
|
26ba25 |
|
|
|
26ba25 |
@@ -2240,6 +2241,7 @@ static int coroutine_fn sd_co_create_opts(const char *filename, QemuOpts *opts,
|
|
|
26ba25 |
fail:
|
|
|
26ba25 |
qapi_free_BlockdevCreateOptions(create_options);
|
|
|
26ba25 |
qobject_unref(qdict);
|
|
|
26ba25 |
+ g_free(redundancy);
|
|
|
26ba25 |
return ret;
|
|
|
26ba25 |
}
|
|
|
26ba25 |
|
|
|
26ba25 |
--
|
|
|
26ba25 |
1.8.3.1
|
|
|
26ba25 |
|