]> xenbits.xensource.com Git - people/liuw/libxenctrl-split/libvirt.git/commitdiff
security: avoid memory leak
authorEric Blake <eblake@redhat.com>
Mon, 21 Feb 2011 22:05:24 +0000 (15:05 -0700)
committerEric Blake <eblake@redhat.com>
Tue, 22 Feb 2011 16:50:34 +0000 (09:50 -0700)
Leak introduced in commit d6623003.

* src/qemu/qemu_driver.c (qemuSecurityInit): Avoid leak on failure.
* src/security/security_stack.c (virSecurityStackClose): Avoid
leaking component drivers.

src/qemu/qemu_driver.c
src/security/security_stack.c

index 0f25a2a9d92bffab17a439d703427edb4e4d3379..8b15a3edb272f79e7542089836588062d0412fc5 100644 (file)
@@ -204,8 +204,11 @@ qemuSecurityInit(struct qemud_driver *driver)
             goto error;
 
         if (!(driver->securityManager = virSecurityManagerNewStack(mgr,
-                                                                   dac)))
+                                                                   dac))) {
+
+            virSecurityManagerFree(dac);
             goto error;
+        }
     } else {
         driver->securityManager = mgr;
     }
index 79b3e1f30f4c008f4e1a0d65846bed4e4f5f1ecc..64f745af887b5eed4118b1afe1363e2c9bca4cd5 100644 (file)
@@ -61,8 +61,13 @@ virSecurityStackOpen(virSecurityManagerPtr mgr ATTRIBUTE_UNUSED)
 }
 
 static int
-virSecurityStackClose(virSecurityManagerPtr mgr ATTRIBUTE_UNUSED)
+virSecurityStackClose(virSecurityManagerPtr mgr)
 {
+    virSecurityStackDataPtr priv = virSecurityManagerGetPrivateData(mgr);
+
+    virSecurityManagerFree(priv->primary);
+    virSecurityManagerFree(priv->secondary);
+
     return 0;
 }