From eda0fc7a823c4053548a3f1dc1b02eea5e8a8b14 Mon Sep 17 00:00:00 2001 From: Christophe Fergeau Date: Fri, 24 Feb 2012 11:34:45 +0100 Subject: [PATCH] Error out when using SPICE TLS with spice_tls=0 It's possible to disable SPICE TLS in qemu.conf. When this happens, libvirt ignores any SPICE TLS port or x509 directory that may have been set when it builds the qemu command line to use. However, it's not ignoring the secure channels that may have been set and adds tls-channel arguments to qemu command line. Current qemu versions don't report an error when this happens, and try to use TLS for the specified channels. Before this patch auto-tls-port 65536 hvm generates -spice port=5900,addr=0,disable-ticketing,tls-channel=main,tls-channel=inputs and starts QEMU. After this patch, an error is reported if a TLS port is set in the XML or if secure channels are specified but TLS is disabled in qemu.conf. This is the behaviour the oVirt people (where I spotted this issue) said they would expect. This fixes bug #790436 --- src/qemu/qemu_command.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 5a345042cb..e783f22e42 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -5231,7 +5231,12 @@ qemuBuildCommandLine(virConnectPtr conn, virBufferAsprintf(&opt, "port=%u", def->graphics[0]->data.spice.port); - if (driver->spiceTLS && def->graphics[0]->data.spice.tlsPort != -1) + if (def->graphics[0]->data.spice.tlsPort != -1) + if (!driver->spiceTLS) { + qemuReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("spice TLS port set in XML configuration, but TLS is disabled in qemu.conf")); + goto error; + } virBufferAsprintf(&opt, ",tls-port=%u", def->graphics[0]->data.spice.tlsPort); switch (virDomainGraphicsListenGetType(def->graphics[0], 0)) { @@ -5287,6 +5292,11 @@ qemuBuildCommandLine(virConnectPtr conn, int mode = def->graphics[0]->data.spice.channels[i]; switch (mode) { case VIR_DOMAIN_GRAPHICS_SPICE_CHANNEL_MODE_SECURE: + if (!driver->spiceTLS) { + qemuReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("spice secure channels set in XML configuration, but TLS is disabled in qemu.conf")); + goto error; + } virBufferAsprintf(&opt, ",tls-channel=%s", virDomainGraphicsSpiceChannelNameTypeToString(i)); break;