On 10/20/25 15:21, Peter Krempa via Devel wrote:
From: Peter Krempa <pkrempa@redhat.com>
Automatically free the variables to prevent leaks when returning from middle of the function.
Fixes: 1de6fd5edb5 Closes: https://gitlab.com/libvirt/libvirt/-/issues/824 Signed-off-by: Peter Krempa <pkrempa@redhat.com> --- src/conf/netdev_vlan_conf.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/src/conf/netdev_vlan_conf.c b/src/conf/netdev_vlan_conf.c index b98c4d92cf..012a28034e 100644 --- a/src/conf/netdev_vlan_conf.c +++ b/src/conf/netdev_vlan_conf.c @@ -34,8 +34,8 @@ virNetDevVlanParse(xmlNodePtr node, xmlXPathContextPtr ctxt, virNetDevVlan *def) { int ret = -1; VIR_XPATH_NODE_AUTORESTORE(ctxt) - char *trunk = NULL; - xmlNodePtr *tagNodes = NULL; + g_autofree char *trunk = NULL; + g_autofree xmlNodePtr *tagNodes = NULL; int nTags; size_t i;
@@ -120,8 +120,6 @@ virNetDevVlanParse(xmlNodePtr node, xmlXPathContextPtr ctxt, virNetDevVlan *def)
ret = 0; cleanup: - VIR_FREE(tagNodes); - VIR_FREE(trunk); return ret; }
Ah, took me a while to realize what the actual problem is. There's one 'return -1' call which should have been 'goto cleanup' instead. Michal