mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-22 17:34:18 +03:00
virsh: Resolve Coverity DEADCODE
Since 0766783abb
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@redhat.com>
This commit is contained in:
parent
f832aa3222
commit
daf27d4d82
@ -4242,7 +4242,6 @@ cmdSaveImageEdit(vshControl *ctl, const vshCmd *cmd)
|
||||
ret = true; goto edit_cleanup;
|
||||
#define EDIT_DEFINE \
|
||||
(virDomainSaveImageDefineXML(ctl->conn, file, doc_edited, define_flags) == 0)
|
||||
#define EDIT_FREE /* */
|
||||
#include "virsh-edit.c"
|
||||
|
||||
vshPrint(ctl, _("State file %s edited.\n"), file);
|
||||
@ -7400,7 +7399,6 @@ cmdMetadata(vshControl *ctl, const vshCmd *cmd)
|
||||
#define EDIT_DEFINE \
|
||||
(virDomainSetMetadata(dom, VIR_DOMAIN_METADATA_ELEMENT, doc_edited, \
|
||||
key, uri, flags) == 0)
|
||||
#define EDIT_FREE /* nothing */
|
||||
#include "virsh-edit.c"
|
||||
|
||||
vshPrint("%s\n", _("Metadata modified"));
|
||||
@ -10894,9 +10892,6 @@ cmdEdit(vshControl *ctl, const vshCmd *cmd)
|
||||
ret = true; goto edit_cleanup;
|
||||
#define EDIT_DEFINE \
|
||||
(dom_edited = virDomainDefineXML(ctl->conn, doc_edited))
|
||||
#define EDIT_FREE \
|
||||
if (dom_edited) \
|
||||
virDomainFree(dom_edited);
|
||||
#include "virsh-edit.c"
|
||||
|
||||
vshPrint(ctl, _("Domain %s XML configuration edited.\n"),
|
||||
|
@ -40,9 +40,6 @@
|
||||
* For example:
|
||||
* #define EDIT_DEFINE (dom_edited = virDomainDefineXML(ctl->conn, doc_edited))
|
||||
*
|
||||
* EDIT_FREE - statement which vir*Free()-s object defined by EDIT_DEFINE, e.g:
|
||||
* #define EDIT_FREE if (dom_edited) virDomainFree(dom_edited);
|
||||
*
|
||||
* Michal Privoznik <mprivozn@redhat.com>
|
||||
*/
|
||||
|
||||
@ -58,10 +55,6 @@
|
||||
# error Missing EDIT_DEFINE definition
|
||||
#endif
|
||||
|
||||
#ifndef EDIT_FREE
|
||||
# error Missing EDIT_FREE definition
|
||||
#endif
|
||||
|
||||
do {
|
||||
char *tmp = NULL;
|
||||
char *doc = NULL;
|
||||
@ -116,7 +109,6 @@ do {
|
||||
}
|
||||
|
||||
/* Everything checks out, so redefine the object. */
|
||||
EDIT_FREE;
|
||||
if (!msg && !(EDIT_DEFINE)) {
|
||||
msg = _("Failed.");
|
||||
}
|
||||
@ -162,4 +154,3 @@ do {
|
||||
#undef EDIT_GET_XML
|
||||
#undef EDIT_NOT_CHANGED
|
||||
#undef EDIT_DEFINE
|
||||
#undef EDIT_FREE
|
||||
|
@ -128,9 +128,6 @@ cmdInterfaceEdit(vshControl *ctl, const vshCmd *cmd)
|
||||
ret = true; goto edit_cleanup;
|
||||
#define EDIT_DEFINE \
|
||||
(iface_edited = virInterfaceDefineXML(ctl->conn, doc_edited, 0))
|
||||
#define EDIT_FREE \
|
||||
if (iface_edited) \
|
||||
virInterfaceFree(iface_edited);
|
||||
#include "virsh-edit.c"
|
||||
|
||||
vshPrint(ctl, _("Interface %s XML configuration edited.\n"),
|
||||
|
@ -1111,9 +1111,6 @@ cmdNetworkEdit(vshControl *ctl, const vshCmd *cmd)
|
||||
ret = true; goto edit_cleanup;
|
||||
#define EDIT_DEFINE \
|
||||
(network_edited = virNetworkDefineXML(ctl->conn, doc_edited))
|
||||
#define EDIT_FREE \
|
||||
if (network_edited) \
|
||||
virNetworkFree(network_edited);
|
||||
#include "virsh-edit.c"
|
||||
|
||||
vshPrint(ctl, _("Network %s XML configuration edited.\n"),
|
||||
|
@ -428,9 +428,6 @@ cmdNWFilterEdit(vshControl *ctl, const vshCmd *cmd)
|
||||
ret = true; goto edit_cleanup;
|
||||
#define EDIT_DEFINE \
|
||||
(nwfilter_edited = virNWFilterDefineXML(ctl->conn, doc_edited))
|
||||
#define EDIT_FREE \
|
||||
if (nwfilter_edited) \
|
||||
virNWFilterFree(nwfilter);
|
||||
#include "virsh-edit.c"
|
||||
|
||||
vshPrint(ctl, _("Network filter %s XML configuration edited.\n"),
|
||||
|
@ -1767,9 +1767,6 @@ cmdPoolEdit(vshControl *ctl, const vshCmd *cmd)
|
||||
ret = true; goto edit_cleanup;
|
||||
#define EDIT_DEFINE \
|
||||
(pool_edited = virStoragePoolDefineXML(ctl->conn, doc_edited, 0))
|
||||
#define EDIT_FREE \
|
||||
if (pool_edited) \
|
||||
virStoragePoolFree(pool_edited);
|
||||
#include "virsh-edit.c"
|
||||
|
||||
vshPrint(ctl, _("Pool %s XML configuration edited.\n"),
|
||||
|
@ -589,9 +589,6 @@ cmdSnapshotEdit(vshControl *ctl, const vshCmd *cmd)
|
||||
(strstr(doc, "<state>disk-snapshot</state>") ? \
|
||||
define_flags |= VIR_DOMAIN_SNAPSHOT_CREATE_DISK_ONLY : 0), \
|
||||
edited = virDomainSnapshotCreateXML(dom, doc_edited, define_flags)
|
||||
#define EDIT_FREE \
|
||||
if (edited) \
|
||||
virDomainSnapshotFree(edited);
|
||||
#include "virsh-edit.c"
|
||||
|
||||
edited_name = virDomainSnapshotGetName(edited);
|
||||
|
Loading…
Reference in New Issue
Block a user