55 lines
2.4 KiB
Diff
55 lines
2.4 KiB
Diff
|
commit 4cd3f241399eb691a7fc9a1279938bfe76215a77
|
||
|
Author: Wim ten Have <wim.ten.have@oracle.com>
|
||
|
Date: Fri May 19 16:38:43 2017 +0200
|
||
|
|
||
|
xenconfig: fix handling of NULL disk source
|
||
|
|
||
|
It is possible to crash libvirtd when converting xl native config to
|
||
|
domXML when the xl config contains an empty disk source, e.g. an empty
|
||
|
CDROM. Fix by checking that the disk source is non-NULL before parsing it.
|
||
|
|
||
|
Signed-off-by: Wim ten Have <wim.ten.have@oracle.com>
|
||
|
|
||
|
Index: libvirt-3.3.0/src/xenconfig/xen_xl.c
|
||
|
===================================================================
|
||
|
--- libvirt-3.3.0.orig/src/xenconfig/xen_xl.c
|
||
|
+++ libvirt-3.3.0/src/xenconfig/xen_xl.c
|
||
|
@@ -316,6 +316,10 @@ xenParseXLDiskSrc(virDomainDiskDefPtr di
|
||
|
char *tmpstr = NULL;
|
||
|
int ret = -1;
|
||
|
|
||
|
+ /* A NULL source is valid, e.g. an empty CDROM */
|
||
|
+ if (srcstr == NULL)
|
||
|
+ return 0;
|
||
|
+
|
||
|
if (STRPREFIX(srcstr, "rbd:")) {
|
||
|
if (!(tmpstr = virStringReplace(srcstr, "\\\\", "\\")))
|
||
|
goto cleanup;
|
||
|
Index: libvirt-3.3.0/tests/xlconfigdata/test-disk-positional-parms-partial.cfg
|
||
|
===================================================================
|
||
|
--- libvirt-3.3.0.orig/tests/xlconfigdata/test-disk-positional-parms-partial.cfg
|
||
|
+++ libvirt-3.3.0/tests/xlconfigdata/test-disk-positional-parms-partial.cfg
|
||
|
@@ -22,4 +22,4 @@ parallel = "none"
|
||
|
serial = "none"
|
||
|
builder = "hvm"
|
||
|
boot = "d"
|
||
|
-disk = [ "/dev/HostVG/XenGuest2,,hda,,backendtype=phy", "/var/lib/libvirt/images/XenGuest2-home,,hdb,,", "/root/boot.iso,,hdc,,devtype=cdrom" ]
|
||
|
+disk = [ "/dev/HostVG/XenGuest2,,hda,,backendtype=phy", "/var/lib/libvirt/images/XenGuest2-home,,hdb,,", "/root/boot.iso,,hdc,,devtype=cdrom" , "format=raw,vdev=hdd,access=ro,devtype=cdrom" ]
|
||
|
Index: libvirt-3.3.0/tests/xlconfigdata/test-disk-positional-parms-partial.xml
|
||
|
===================================================================
|
||
|
--- libvirt-3.3.0.orig/tests/xlconfigdata/test-disk-positional-parms-partial.xml
|
||
|
+++ libvirt-3.3.0/tests/xlconfigdata/test-disk-positional-parms-partial.xml
|
||
|
@@ -39,6 +39,12 @@
|
||
|
<readonly/>
|
||
|
<address type='drive' controller='0' bus='1' target='0' unit='0'/>
|
||
|
</disk>
|
||
|
+ <disk type='file' device='cdrom'>
|
||
|
+ <driver name='qemu' type='raw'/>
|
||
|
+ <target dev='hdd' bus='ide'/>
|
||
|
+ <readonly/>
|
||
|
+ <address type='drive' controller='0' bus='1' target='0' unit='1'/>
|
||
|
+ </disk>
|
||
|
<controller type='ide' index='0'/>
|
||
|
<interface type='bridge'>
|
||
|
<mac address='00:16:3e:66:92:9c'/>
|