]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
vz: fix memory leak in prlsdkGetNetAddresses()
authorshivanayak <shivanayak@gmail.com>
Sun, 8 Mar 2026 18:28:45 +0000 (23:58 +0530)
committerPeter Krempa <pkrempa@redhat.com>
Mon, 20 Apr 2026 10:09:48 +0000 (12:09 +0200)
prlsdkGetNetAddresses allocates addr via g_new0 on each loop iteration.
If PrlStrList_GetItem fails and jumps to cleanup, addr is leaked since
prlsdkParseNetAddress (which previously freed it) is never reached.

Fix by using g_autofree for addr in prlsdkGetNetAddresses so it is freed
at scope end, and remove the VIR_FREE(addr) from prlsdkParseNetAddress
to avoid double-free, as callers should manage their own memory.

Signed-off-by: Shiva Shankar <shivanayak@gmail.com>
Reviewed-by: Peter Krempa <pkrempa@redhat.com>
src/vz/vz_sdk.c

index 160778146dcd8370ecbb95f1fc8c754b2c362d48..e6dd9533bee403e23a0ee5b5496bb119c676a501 100644 (file)
@@ -900,7 +900,6 @@ prlsdkParseNetAddress(char *addr)
         VIR_WARN("cannot parse network address '%s'", addr);
 
     VIR_FREE(ip);
-    VIR_FREE(addr);
 
     return ret;
 }
@@ -923,7 +922,7 @@ prlsdkGetNetAddresses(PRL_HANDLE sdknet, virDomainNetDef *net)
     for (i = 0; i < num; ++i) {
         virNetDevIPAddr *ip = NULL;
         PRL_UINT32 buflen = 0;
-        char *addr;
+        g_autofree char *addr = NULL;
 
         pret = PrlStrList_GetItem(addrlist, i, NULL, &buflen);
         prlsdkCheckRetGoto(pret, cleanup);