[libvirt] [PATCH] qemu: Resolve Coverity UNINIT

Peter Krempa pkrempa at redhat.com
Sun Nov 16 09:15:08 UTC 2014


On 11/15/14 14:20, John Ferlan wrote:
> For some reason, commit id '72b4151f' triggered a Coverity uninitialized
> 'reply' variable check when referenced within the for loop.
> 
> It seems Coverity doesn't know that flags will have to be either AFFECT_LIVE
> or AFFECT_CONFIG after the virDomainLiveConfigHelperMethod call.
> 
> By adding a "sa_assert()" to confirm that fact, Coverity is happy again.

Hmm, I remember few of those in the last time.


> 
> Signed-off-by: John Ferlan <jferlan at redhat.com>
> ---
> 
>  NOTE: 
>  Using "sa_assert(flags & (VIR_DOMAIN_AFFECT_LIVE | VIR_DOMAIN_AFFECT_CONFIG));
>  did not clear the error - only the two separate checks using the ||.
> 
>  Yes, the parentheses are overkill...
> 
>  src/qemu/qemu_driver.c | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
> index 9b19629..a84fd47 100644
> --- a/src/qemu/qemu_driver.c
> +++ b/src/qemu/qemu_driver.c
> @@ -17000,6 +17000,8 @@ qemuDomainGetBlockIoTune(virDomainPtr dom,
>      if (virDomainLiveConfigHelperMethod(caps, driver->xmlopt, vm, &flags,
>                                          &persistentDef) < 0)

Did you try to put the sa_assert() test inside the
'virDomainLiveConfigHelperMethod' so that we wouldn't need to put it in
all the places that call the function? Would coverity be able to pass
the result in such case?

>          goto endjob;
> +    sa_assert((flags & VIR_DOMAIN_AFFECT_LIVE) ||
> +              (flags & VIR_DOMAIN_AFFECT_CONFIG));
>  
>      if (flags & VIR_DOMAIN_AFFECT_LIVE) {
>          /* If the VM is running, we can check if the current VM can use
> 

ACK if coverity won't be able to process this in case the assertion is
verified inside the function that manipulates flags.

Peter

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: OpenPGP digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20141116/03b77eb7/attachment-0001.sig>


More information about the libvir-list mailing list