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