diff --git a/src/libxl/libxl_conf.c b/src/libxl/libxl_conf.c index 56bc097194..b04dffcfa9 100644 --- a/src/libxl/libxl_conf.c +++ b/src/libxl/libxl_conf.c @@ -1227,13 +1227,18 @@ libxlMakeVfb(virPortAllocatorPtr graphicsports, } x_vfb->vnc.display = l_vfb->data.vnc.port - LIBXL_VNC_PORT_MIN; - if ((glisten = virDomainGraphicsGetListen(l_vfb, 0)) && - glisten->address) { - /* libxl_device_vfb_init() does VIR_STRDUP("127.0.0.1") */ - VIR_FREE(x_vfb->vnc.listen); - if (VIR_STRDUP(x_vfb->vnc.listen, glisten->address) < 0) - return -1; + if ((glisten = virDomainGraphicsGetListen(l_vfb, 0))) { + if (glisten->address) { + /* libxl_device_vfb_init() does VIR_STRDUP("127.0.0.1") */ + VIR_FREE(x_vfb->vnc.listen); + if (VIR_STRDUP(x_vfb->vnc.listen, glisten->address) < 0) + return -1; + } else { + if (VIR_STRDUP(glisten->address, VIR_LOOPBACK_IPV4_ADDR) < 0) + return -1; + } } + if (VIR_STRDUP(x_vfb->vnc.passwd, l_vfb->data.vnc.auth.passwd) < 0) return -1; if (VIR_STRDUP(x_vfb->keymap, l_vfb->data.vnc.keymap) < 0) @@ -1335,10 +1340,16 @@ libxlMakeBuildInfoVfb(virPortAllocatorPtr graphicsports, } b_info->u.hvm.spice.port = l_vfb->data.spice.port; - if ((glisten = virDomainGraphicsGetListen(l_vfb, 0)) && - glisten->address && - VIR_STRDUP(b_info->u.hvm.spice.host, glisten->address) < 0) - return -1; + if ((glisten = virDomainGraphicsGetListen(l_vfb, 0))) { + if (glisten->address) { + if (VIR_STRDUP(b_info->u.hvm.spice.host, glisten->address) < 0) + return -1; + } else { + if (VIR_STRDUP(b_info->u.hvm.spice.host, VIR_LOOPBACK_IPV4_ADDR) < 0 || + VIR_STRDUP(glisten->address, VIR_LOOPBACK_IPV4_ADDR) < 0) + return -1; + } + } if (VIR_STRDUP(b_info->u.hvm.keymap, l_vfb->data.spice.keymap) < 0) return -1;