]> xenbits.xensource.com Git - libvirt.git/commitdiff
Fixed memory corruption after destroying network/domain objects in QEMU driver
authorDaniel P. Berrange <berrange@redhat.com>
Fri, 6 Jul 2007 21:52:42 +0000 (21:52 +0000)
committerDaniel P. Berrange <berrange@redhat.com>
Fri, 6 Jul 2007 21:52:42 +0000 (21:52 +0000)
ChangeLog
src/qemu_driver.c

index a44d65caee78c502c2a7af6b881b603be7d4b4f8..03f30084e75cf3d833bb78a5f39e5511f1da6098 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+Fri Jul  6 17:50:00 EST 2007 Daniel P.Berrange <berrange@redhat.com>
+
+       * src/qemu_driver.c: Use virFreeDomain and virFreeNetwork
+       instead of free(), to ensure the objects are removed from
+       the cache
+
 Fri Jul  6 16:19:00 BST 2007 Richard W.M. Jones <rjones@redhat.com>
 
        * src/libvirt.c, src/qemu_driver.c: If the virNetworkLookup*
index 0f233eaba1a4872ec6162c26ace03ce32055317c..f6d24a480b51757a512f590ea956629282238765 100644 (file)
@@ -1903,7 +1903,7 @@ static int qemudDomainDestroy(virDomainPtr dom) {
     }
 
     ret = qemudShutdownVMDaemon(driver, vm);
-    free(dom);
+    virFreeDomain(dom->conn, dom);
     return ret;
 }
 
@@ -2332,6 +2332,7 @@ static int qemudNetworkStart(virNetworkPtr net) {
 static int qemudNetworkDestroy(virNetworkPtr net) {
     struct qemud_driver *driver = (struct qemud_driver *)net->conn->networkPrivateData;
     struct qemud_network *network = qemudFindNetworkByUUID(driver, net->uuid);
+    int ret;
 
     if (!network) {
         qemudReportError(net->conn, NULL, net, VIR_ERR_INVALID_NETWORK,
@@ -2339,7 +2340,11 @@ static int qemudNetworkDestroy(virNetworkPtr net) {
         return -1;
     }
 
-    return qemudShutdownNetworkDaemon(driver, network);
+    ret = qemudShutdownNetworkDaemon(driver, network);
+
+    virFreeNetwork(net->conn, net);
+
+    return ret;
 }
 
 static char *qemudNetworkDumpXML(virNetworkPtr net, int flags ATTRIBUTE_UNUSED) {