Coverity determined that the copied 'oldguest' would be leaked for
both error and success paths.
Signed-off-by: John Ferlan <jferlan(a)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 fb89086..b460e8d 100644
--- a/src/cpu/cpu_x86.c
+++ b/src/cpu/cpu_x86.c
@@ -2024,8 +2024,9 @@ static int
x86UpdateHostModel(virCPUDefPtr guest,
const virCPUDef *host)
{
- virCPUDefPtr oldguest;
+ virCPUDefPtr oldguest = NULL;
size_t i;
+ int ret = -1;
guest->match = VIR_CPU_MATCH_EXACT;
@@ -2037,20 +2038,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;
}
--
1.9.3