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