[libvirt] [PATCH 07/26] virsh: Resolve Coverity DEADCODE

Peter Krempa pkrempa at redhat.com
Thu Sep 11 11:47:53 UTC 2014


On 09/05/14 00:26, John Ferlan wrote:
> Since 0766783abbe8bbc9ea686c2c3149f4c0ac139e19
> 
> Coverity complains that the EDIT_FREE definition results in DEADCODE.
> 
> As it turns out with the change to use the EDIT_FREE macro the call to
> vir*Free() wouldn't be necessary nor would it happen...
> 
> Prior code to above commitid would :
> 
>   vir*Ptr foo = NULL;
>   ...
>   foo = vir*GetXMLDesc()
>   ...
>   vir*Free(foo);
>   foo = vir*DefineXML()
>   ...
> 
> And thus the free was needed.  With the change to use EDIT_FREE the
> same code changed to:
> 
>   vir*Ptr foo = NULL;
>   vir*Ptr foo_edited = NULL;
>   ...
>   foo = vir*GetXMLDesc()
>   ...
>   if (foo_edited)
>       vir*Free(foo_edited);
>   foo_edited = vir*DefineXML()
>   ...
> 
> However, foo_edited could never be set in the code path - even with
> all the goto's since the only way for it to be set is if vir*DefineXML()
> succeeds in which case the code to allow a retry (and thus all the goto's)
> never leaves foo_edited set
> 
> All error paths lead to "cleanup:" which causes both foo and foo_edited
> to call the respective vir*Free() routines if set.
> 
> Signed-off-by: John Ferlan <jferlan at redhat.com>
> ---
>  tools/virsh-domain.c    | 5 -----
>  tools/virsh-edit.c      | 9 ---------
>  tools/virsh-interface.c | 3 ---
>  tools/virsh-network.c   | 3 ---
>  tools/virsh-nwfilter.c  | 3 ---
>  tools/virsh-pool.c      | 3 ---
>  tools/virsh-snapshot.c  | 3 ---
>  7 files changed, 29 deletions(-)


Yep, the free()s in the cleanup section of each command are redundant.

ACK


-------------- 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/20140911/9d3b1c53/attachment-0001.sig>


More information about the libvir-list mailing list