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

Reply via email to