[libvirt] [PATCH 2/2] libxl: Resolve Coverity RESOURCE_LEAK

John Ferlan jferlan at redhat.com
Mon May 16 14:05:05 UTC 2016


Commit id 'f9edcfa4' added cookie manipulation for libxl; however, some
cookie crumb cleanup was missed.

In libxlDomainMigrationBegin, the cookie is allocated and baked; however,
the mig ingredients weren't cleaned up.

In libxlDomainMigrationPrepare, when the 'mig' cookie is added to the
args, set the 'mig = NULL'; otherwise, other failure paths between when
the code ate the cookie data and when it was added to args would fail
to clean up the crumbs.

Signed-off-by: John Ferlan <jferlan at redhat.com>
---
 src/libxl/libxl_migration.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/src/libxl/libxl_migration.c b/src/libxl/libxl_migration.c
index ad54960..a809aa0 100644
--- a/src/libxl/libxl_migration.c
+++ b/src/libxl/libxl_migration.c
@@ -402,7 +402,7 @@ libxlDomainMigrationBegin(virConnectPtr conn,
 {
     libxlDriverPrivatePtr driver = conn->privateData;
     libxlDriverConfigPtr cfg = libxlDriverConfigGet(driver);
-    libxlMigrationCookiePtr mig;
+    libxlMigrationCookiePtr mig = NULL;
     virDomainDefPtr tmpdef = NULL;
     virDomainDefPtr def;
     char *xml = NULL;
@@ -440,6 +440,7 @@ libxlDomainMigrationBegin(virConnectPtr conn,
         vm = NULL;
 
  cleanup:
+    libxlMigrationCookieFree(mig);
     if (vm)
         virObjectUnlock(vm);
 
@@ -601,6 +602,7 @@ libxlDomainMigrationPrepare(virConnectPtr dconn,
     args->socks = socks;
     args->nsocks = nsocks;
     args->migcookie = mig;
+    mig = NULL;
 
     for (i = 0; i < nsocks; i++) {
         if (virNetSocketSetBlocking(socks[i], true) < 0)
@@ -640,6 +642,7 @@ libxlDomainMigrationPrepare(virConnectPtr dconn,
     }
 
  done:
+    libxlMigrationCookieFree(mig);
     if (!uri_in)
         VIR_FREE(hostname);
     else
-- 
2.5.5




More information about the libvir-list mailing list