On 10/20/25 15:21, Peter Krempa via Devel wrote: > From: Peter Krempa <[email protected]> > > 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 <[email protected]> > --- > 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
