]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemu: fix memory leak in qemuDomainSaveInternal()
authorZheng Chuan <zhengchuan@huawei.com>
Wed, 29 Jul 2020 03:42:49 +0000 (11:42 +0800)
committerLaine Stump <laine@redhat.com>
Wed, 29 Jul 2020 19:47:24 +0000 (15:47 -0400)
Use g_autoptr to free the temporary virDomainDef object created by
qemuDomainSaveInternal() when xmlin is non-NULL. Leak was added in
commit 0ea479f8f6, first appearing in libvirt 0.9.4 in August 2011.

Signed-off-by: Zheng Chuan <zhengchuan@huawei.com>
Reviewed-by: Laine Stump <laine@redhat.com>
src/qemu/qemu_driver.c

index 53980d4d78c6749e0086e9a0cad7130b420a444f..0ad6359102b808e8b75bbf2f6e02e00b3b159551 100644 (file)
@@ -3356,7 +3356,7 @@ qemuDomainSaveInternal(virQEMUDriverPtr driver,
      * is NULL or whether it was the live xml of the domain moments
      * before.  */
     if (xmlin) {
-        virDomainDefPtr def = NULL;
+        g_autoptr(virDomainDef) def = NULL;
 
         if (!(def = virDomainDefParseString(xmlin, driver->xmlopt,
                                             priv->qemuCaps,
@@ -3364,10 +3364,8 @@ qemuDomainSaveInternal(virQEMUDriverPtr driver,
                                             VIR_DOMAIN_DEF_PARSE_SKIP_VALIDATE))) {
             goto endjob;
         }
-        if (!qemuDomainCheckABIStability(driver, vm, def)) {
-            virDomainDefFree(def);
+        if (!qemuDomainCheckABIStability(driver, vm, def))
             goto endjob;
-        }
         xml = qemuDomainDefFormatLive(driver, priv->qemuCaps, def, NULL, true, true);
     } else {
         xml = qemuDomainDefFormatLive(driver, priv->qemuCaps, vm->def,