
δΊ 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