于 2013-3-15 6:56, John Ferlan 写道:
Need to really handle the error on the get_dominfo_from_xml() call

Need to be sure to free(xml) before returning
---
  libxkutil/device_parsing.c | 10 ++++++----
  1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/libxkutil/device_parsing.c b/libxkutil/device_parsing.c
index 2841662..264d4cc 100644
--- a/libxkutil/device_parsing.c
+++ b/libxkutil/device_parsing.c
@@ -1246,7 +1246,7 @@ int get_dominfo_from_xml(const char *xml, struct domain 
**dominfo)
  int get_dominfo(virDomainPtr dom, struct domain **dominfo)
  {
          char *xml;
-        int ret;
+        int ret = 0;
          int start;
          xml = virDomainGetXMLDesc(dom,
                  VIR_DOMAIN_XML_INACTIVE | VIR_DOMAIN_XML_SECURE);
@@ -1256,17 +1256,19 @@ int get_dominfo(virDomainPtr dom, struct domain 
**dominfo)
                  return 0;
          }

-        ret = get_dominfo_from_xml(xml, dominfo);
-        if (ret != 1) {
+        if (get_dominfo_from_xml(xml, dominfo) == 0) {
                  CU_DEBUG("Failed to translate xml into struct domain");
+                goto out;
          }
          if (virDomainGetAutostart(dom,  &start) !=  0) {
                  CU_DEBUG("Failed to get dom autostart with libvirt API.");
-                return 0;
+                goto out;
          }

          (*dominfo)->autostrt = start;
+        ret = 1;

+ out:
          free(xml);

          return ret;

  Fixed a leak, +1

--
Best Regards

Wenchao Xia

_______________________________________________
Libvirt-cim mailing list
[email protected]
https://www.redhat.com/mailman/listinfo/libvirt-cim

Reply via email to