From 495bf507eaf0eab638d3cf89a8854d23824b319e Mon Sep 17 00:00:00 2001
Message-Id: <495bf507eaf0eab638d3cf89a8854d23824b319e@dist-git>
From: John Ferlan <jferlan@redhat.com>
Date: Wed, 27 Aug 2014 14:27:07 -0400
Subject: [PATCH] cpu_x86: Resolve Coverity RESOURCE_LEAK
Coverity determined that the copied 'oldguest' would be leaked for
both error and success paths.
(cherry picked from commit be7b82a283bc789da6cf9edc413ea399636b97b8)
https://bugzilla.redhat.com/show_bug.cgi?id=1185458
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
---
src/cpu/cpu_x86.c | 15 ++++++++++-----
1 file changed, 10 insertions(+), 5 deletions(-)
diff --git a/src/cpu/cpu_x86.c b/src/cpu/cpu_x86.c
index 7bd8acb..4e77550 100644
--- a/src/cpu/cpu_x86.c
+++ b/src/cpu/cpu_x86.c
@@ -1940,8 +1940,9 @@ static int
x86UpdateHostModel(virCPUDefPtr guest,
const virCPUDefPtr host)
{
- virCPUDefPtr oldguest;
+ virCPUDefPtr oldguest = NULL;
size_t i;
+ int ret = -1;
guest->match = VIR_CPU_MATCH_EXACT;
@@ -1953,20 +1954,24 @@ x86UpdateHostModel(virCPUDefPtr guest,
/* update the host model according to the desired configuration */
if (!(oldguest = virCPUDefCopy(guest)))
- return -1;
+ goto cleanup;
virCPUDefFreeModel(guest);
if (virCPUDefCopyModel(guest, host, true) < 0)
- return -1;
+ goto cleanup;
for (i = 0; i < oldguest->nfeatures; i++) {
if (virCPUDefUpdateFeature(guest,
oldguest->features[i].name,
oldguest->features[i].policy) < 0)
- return -1;
+ goto cleanup;
}
- return 0;
+ ret = 0;
+
+ cleanup:
+ virCPUDefFree(oldguest);
+ return ret;
}
--
2.2.2