]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
virsh: Resolve Coverity DEADCODE
authorJohn Ferlan <jferlan@redhat.com>
Thu, 4 Sep 2014 15:31:08 +0000 (11:31 -0400)
committerJohn Ferlan <jferlan@redhat.com>
Thu, 11 Sep 2014 12:03:37 +0000 (08:03 -0400)
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@redhat.com>
tools/virsh-domain.c
tools/virsh-edit.c
tools/virsh-interface.c
tools/virsh-network.c
tools/virsh-nwfilter.c
tools/virsh-pool.c
tools/virsh-snapshot.c

index 6aa8631a72ac65bd212a9cf2b140e809f18b00d5..3169b45b05ddbc32d3e3c71197cff0bffd54f32d 100644 (file)
@@ -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"),
index 5d35c556794387cfd3c1070ef98689bd952495a7..10298f68c8ed8ab09254a2235189ea55bc353d14 100644 (file)
@@ -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>
  */
 
 # 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
index d4ec8540e0f2813de108c95ab58eb7588496132d..6cacaf1071e3a3cb854f1224a3ce37c83b6f9c30 100644 (file)
@@ -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"),
index 9497472541f1892b8edf1c546626d17c0d281caf..5fe4b32661d9585c935a62d559f09734c6cd3161 100644 (file)
@@ -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"),
index 6e6e21b7d107987746adbba56e2a4eb706cec750..ca54c9db58db5c1829637179aeb8efaae807f15e 100644 (file)
@@ -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"),
index 80313b1d53013519d4e4133d3d008a44274ba9d8..0b8dba5f13ce24be8ae254a329f5b20d09fb8486 100644 (file)
@@ -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"),
index 3ecb3def533305da669aacd2f1a262ee0712a189..885ad22ec51187c78938f2cf270222e0bb3c712d 100644 (file)
@@ -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);