From ac74238773ad287eaa2bfb7f4b85e71aa12b124e Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" 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