]> xenbits.xensource.com Git - people/liuw/libxenctrl-split/libvirt.git/commitdiff
cpu_x86: Resolve Coverity RESOURCE_LEAK
authorJohn Ferlan <jferlan@redhat.com>
Wed, 27 Aug 2014 18:27:07 +0000 (14:27 -0400)
committerJohn Ferlan <jferlan@redhat.com>
Thu, 28 Aug 2014 12:12:16 +0000 (08:12 -0400)
Coverity determined that the copied 'oldguest' would be leaked for
both error and success paths.

src/cpu/cpu_x86.c

index fb8908676ebc2999497e9580b7d20b1ef971c253..b460e8d1eeaa9b96dadec0ac3cffd93042d2d5c6 100644 (file)
@@ -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;
 }