Blob Blame History Raw
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