Re: [PATCH] conf: clear the acpiNodeset field after freeing

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Sep 09, 2025 at 10:28:33 +0100, Daniel P. Berrangé via Devel wrote:
> From: Daniel P. Berrangé <berrange@xxxxxxxxxx>
> 
> The virDomainDeviceInfoClear method does not free the struct, only
> its contents, so all pointer fields must be explicitly set to NULL
> after releasing to avoid disk of double-free.
> 
> Reported by coverity:
> 
>   *** CID 895678:         Memory - corruptions  (USE_AFTER_FREE)
>   /src/conf/domain_conf.c: 5926             in virDomainDeviceInfoParseXML()
>   5920             goto cleanup;
>   5921
>   5922
>   5923         ret = 0;
>   5924      cleanup:
>   5925         if (ret < 0)
>   >>>     CID 895678:         Memory - corruptions  (USE_AFTER_FREE)
>   >>>     Calling "virDomainDeviceInfoClear" frees pointer "info->acpiNodeset" which has already been freed.
>   5926             virDomainDeviceInfoClear(info);
>   5927         return ret;
>   5928     }
>   5929
>   5930     static int
>   5931     virDomainHostdevSubsysUSBDefParseXML(xmlNodePtr node,
> 
> Signed-off-by: Daniel P. Berrangé <berrange@xxxxxxxxxx>
> ---
>  src/conf/device_conf.c | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/src/conf/device_conf.c b/src/conf/device_conf.c
> index d08de68717..3fa7bba649 100644
> --- a/src/conf/device_conf.c
> +++ b/src/conf/device_conf.c
> @@ -138,6 +138,7 @@ virDomainDeviceInfoClear(virDomainDeviceInfo *info)
>      VIR_FREE(info->romfile);
>      VIR_FREE(info->loadparm);
>      virBitmapFree(info->acpiNodeset);
> +    info->acpiNodeset = NUll;

NULL instead of NUll

Also consider using g_clear_pointer(&info->acpiNodeset, virBitmapFree)
instead.


Reviewed-by: Peter Krempa <pkrempa@xxxxxxxxxx>




[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]

  Powered by Linux