From ac74238773ad287eaa2bfb7f4b85e71aa12b124e Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones@redhat.com>
Date: Sat, 27 Aug 2016 08:51:29 +0100
Subject: [PATCH] lib: Don't assert fail if port is missing in XML
(RHBZ#1370424).
Thanks: Xiaodai Wang
(cherry picked from commit 9e7b564fc1d9fa0e99a46e4739614820812ca42b)
---
src/libvirt-domain.c | 17 +++++++++++------
1 file changed, 11 insertions(+), 6 deletions(-)
diff --git a/src/libvirt-domain.c b/src/libvirt-domain.c
index b096fb3..7d5da2f 100644
--- a/src/libvirt-domain.c
+++ b/src/libvirt-domain.c
@@ -604,15 +604,20 @@ for_each_disk (guestfs_h *g,
for (hi = 0; hi < xphost->nodesetval->nodeNr ; hi++) {
xmlChar *name, *port;
xmlNodePtr h = xphost->nodesetval->nodeTab[hi];
+ int r;
assert (h);
assert (h->type == XML_ELEMENT_NODE);
- name = xmlGetProp(h, BAD_CAST "name");
- assert(name);
- port = xmlGetProp(h, BAD_CAST "port");
- assert (port);
- debug (g, _("disk[%zu]: host: %s:%s"), i, name, port);
- if (asprintf(&server[hi], "%s:%s", name, port) == -1) {
+ name = xmlGetProp (h, BAD_CAST "name");
+ assert (name); // libvirt checks this
+ port = xmlGetProp (h, BAD_CAST "port");
+ debug (g, "disk[%zu]: hostname: %s port: %s",
+ i, name, port ? (char *) port : "(not set)");
+ if (port)
+ r = asprintf (&server[hi], "%s:%s", name, port);
+ else
+ r = asprintf (&server[hi], "%s", name);
+ if (r == -1) {
perrorf (g, "asprintf");
return -1;
}
--
1.8.3.1