[Libvir] [PATCH] Plug test-related leaks

Jim Meyering jim at meyering.net
Tue Jan 29 10:44:50 UTC 2008


Once I had a static "virsh" binary, I ran this:

    cd src && valgrind --leak-check=full ./virsh --connect \
      test://$PWD/../docs/testnode.xml list

which exposed some leaks.
I fixed them like this:

	Plug test-related leaks.
	* src/test.c (testLoadNetwork): Free forwardDev.
	(testLoadDomain): Free ctxt.
	(testLoadNetwork): Likewise.
	(testOpenFromFile): Likewise.

Signed-off-by: Jim Meyering <meyering at redhat.com>
---
 src/test.c |    8 ++++++++
 1 files changed, 8 insertions(+), 0 deletions(-)

diff --git a/src/test.c b/src/test.c
index d228b31..c46a045 100644
--- a/src/test.c
+++ b/src/test.c
@@ -351,9 +351,11 @@ static int testLoadDomain(virConnectPtr conn,
     privconn->domains[handle].onPoweroff = onPoweroff;
     privconn->domains[handle].onCrash = onCrash;

+    xmlXPathFreeContext(ctxt);
     return (handle);

  error:
+    xmlXPathFreeContext(ctxt);
     if (name)
         free(name);
     return (-1);
@@ -508,6 +510,7 @@ static int testLoadNetwork(virConnectPtr conn,
     if (forwardDev) {
         strncpy(privconn->networks[handle].forwardDev, forwardDev, sizeof(privconn->networks[handle].forwardDev)-1);
         privconn->networks[handle].forwardDev[sizeof(privconn->networks[handle].forwardDev)-1] = '\0';
+        free(forwardDev);
     }

     strncpy(privconn->networks[handle].ipAddress, ipaddress, sizeof(privconn->networks[handle].ipAddress)-1);
@@ -522,9 +525,12 @@ static int testLoadNetwork(virConnectPtr conn,
     strncpy(privconn->networks[handle].dhcpEnd, dhcpend, sizeof(privconn->networks[handle].dhcpEnd)-1);
     privconn->networks[handle].dhcpEnd[sizeof(privconn->networks[handle].dhcpEnd)-1] = '\0';
     free(dhcpend);
+    xmlXPathFreeContext(ctxt);
     return (handle);

  error:
+    xmlXPathFreeContext(ctxt);
+    free (forwardDev);
     if (ipaddress)
         free(ipaddress);
     if (ipnetmask)
@@ -833,11 +839,13 @@ static int testOpenFromFile(virConnectPtr conn,
         }
     }

+    xmlXPathFreeContext(ctxt);
     xmlFreeDoc(xml);

     return (0);

  error:
+    xmlXPathFreeContext(ctxt);
     if (domains != NULL)
         free(domains);
     if (networks != NULL)
--
1.5.4.rc5.1.g0fa73




More information about the libvir-list mailing list