]> xenbits.xensource.com Git - libvirt.git/commitdiff
libxl: Free migration cookie
authorJohn Ferlan <jferlan@redhat.com>
Mon, 16 May 2016 12:20:46 +0000 (08:20 -0400)
committerJohn Ferlan <jferlan@redhat.com>
Mon, 16 May 2016 17:41:17 +0000 (13:41 -0400)
Commit id 'f9edcfa4' added cookie manipulation for libxl; however, some
cookie crumb cleanup was missed. Found by Coverity.

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@redhat.com>
src/libxl/libxl_migration.c

index ad54960ec141aa3409010db6314430606ef4433a..a809aa05110c65829d3f32a9308d661e572a41ab 100644 (file)
@@ -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