mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-22 05:35:25 +00:00
libxl_conf: Fix config generation for multiple serial devices
Currently, an array of libxl_string_list (char **) or in other words, a triple char pointer is initialized. This is dereferenced to a char ** type and stored in serial_list, which is NULL at this point. There is an attempt to reference an element of this serial_list when making a call to libxlMakeChrdevStr which causes a segmentation fault. To fix this, we simply allocate an array of char * instead of libxl_string_list. This patch also adds testcases to extend coverage over both single serial and multiple serial cases. Signed-off-by: Rayhan Faizel <rayhan.faizel@gmail.com> Reviewed-by: Martin Kletzander <mkletzan@redhat.com>
This commit is contained in:
parent
655225315c
commit
cb2a6ef8b5
@ -692,7 +692,7 @@ libxlMakeDomBuildInfo(virDomainDef *def,
|
|||||||
0)
|
0)
|
||||||
return -1;
|
return -1;
|
||||||
} else {
|
} else {
|
||||||
b_info->u.hvm.serial_list = *g_new0(libxl_string_list, def->nserials + 1);
|
b_info->u.hvm.serial_list = g_new0(char *, def->nserials + 1);
|
||||||
for (i = 0; i < def->nserials; i++) {
|
for (i = 0; i < def->nserials; i++) {
|
||||||
if (libxlMakeChrdevStr(def->serials[i],
|
if (libxlMakeChrdevStr(def->serials[i],
|
||||||
&b_info->u.hvm.serial_list[i]) < 0)
|
&b_info->u.hvm.serial_list[i]) < 0)
|
||||||
|
63
tests/libxlxml2domconfigdata/multiple-serial.json
Normal file
63
tests/libxlxml2domconfigdata/multiple-serial.json
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
{
|
||||||
|
"c_info": {
|
||||||
|
"type": "hvm",
|
||||||
|
"name": "test-hvm",
|
||||||
|
"uuid": "2147d599-9cc6-c0dc-92ab-4064b5446e9b"
|
||||||
|
},
|
||||||
|
"b_info": {
|
||||||
|
"max_vcpus": 4,
|
||||||
|
"avail_vcpus": [
|
||||||
|
0,
|
||||||
|
1,
|
||||||
|
2,
|
||||||
|
3
|
||||||
|
],
|
||||||
|
"max_memkb": 1048576,
|
||||||
|
"target_memkb": 1048576,
|
||||||
|
"shadow_memkb": 1234,
|
||||||
|
"sched_params": {
|
||||||
|
|
||||||
|
},
|
||||||
|
"acpi": "True",
|
||||||
|
"apic": "True",
|
||||||
|
"type.hvm": {
|
||||||
|
"pae": "True",
|
||||||
|
"nographic": "True",
|
||||||
|
"vga": {
|
||||||
|
"kind": "none"
|
||||||
|
},
|
||||||
|
"vnc": {
|
||||||
|
"enable": "False"
|
||||||
|
},
|
||||||
|
"sdl": {
|
||||||
|
"enable": "False"
|
||||||
|
},
|
||||||
|
"spice": {
|
||||||
|
|
||||||
|
},
|
||||||
|
"serial_list": [
|
||||||
|
"null",
|
||||||
|
"stdio",
|
||||||
|
"vc",
|
||||||
|
"pty",
|
||||||
|
"pipe:/tmp/file",
|
||||||
|
"file:/tmp/serial.log",
|
||||||
|
"/dev/ttyS2",
|
||||||
|
"udp::9999@:0",
|
||||||
|
"tcp:127.0.0.1:9999",
|
||||||
|
"unix:/tmp/serial-server.sock,server,nowait"
|
||||||
|
],
|
||||||
|
"boot": "c",
|
||||||
|
"rdm": {
|
||||||
|
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"arch_arm": {
|
||||||
|
|
||||||
|
},
|
||||||
|
"arch_x86": {
|
||||||
|
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"on_reboot": "restart"
|
||||||
|
}
|
47
tests/libxlxml2domconfigdata/multiple-serial.xml
Normal file
47
tests/libxlxml2domconfigdata/multiple-serial.xml
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
<domain type='xen'>
|
||||||
|
<name>test-hvm</name>
|
||||||
|
<description>None</description>
|
||||||
|
<uuid>2147d599-9cc6-c0dc-92ab-4064b5446e9b</uuid>
|
||||||
|
<memory>1048576</memory>
|
||||||
|
<currentMemory>1048576</currentMemory>
|
||||||
|
<vcpu>4</vcpu>
|
||||||
|
<on_poweroff>destroy</on_poweroff>
|
||||||
|
<on_reboot>restart</on_reboot>
|
||||||
|
<on_crash>destroy</on_crash>
|
||||||
|
<clock offset='utc'/>
|
||||||
|
<os>
|
||||||
|
<type>hvm</type>
|
||||||
|
<loader>/usr/lib/xen/boot/hvmloader</loader>
|
||||||
|
<boot dev='hd'/>
|
||||||
|
</os>
|
||||||
|
<features>
|
||||||
|
<apic/>
|
||||||
|
<acpi/>
|
||||||
|
<pae/>
|
||||||
|
</features>
|
||||||
|
<devices>
|
||||||
|
<serial type='null'/>
|
||||||
|
<serial type='stdio'/>
|
||||||
|
<serial type='vc'/>
|
||||||
|
<serial type='pty'/>
|
||||||
|
<serial type='pipe'>
|
||||||
|
<source path='/tmp/file'/>
|
||||||
|
</serial>
|
||||||
|
<serial type='file'>
|
||||||
|
<source path='/tmp/serial.log'/>
|
||||||
|
</serial>
|
||||||
|
<serial type='dev'>
|
||||||
|
<source path='/dev/ttyS2'/>
|
||||||
|
</serial>
|
||||||
|
<serial type='udp'>
|
||||||
|
<source mode='connect' service='9999'/>
|
||||||
|
</serial>
|
||||||
|
<serial type='tcp'>
|
||||||
|
<source mode='connect' host='127.0.0.1' service='9999'/>
|
||||||
|
<protocol type='raw'/>
|
||||||
|
</serial>
|
||||||
|
<serial type='unix'>
|
||||||
|
<source mode='bind' path='/tmp/serial-server.sock'/>
|
||||||
|
</serial>
|
||||||
|
</devices>
|
||||||
|
</domain>
|
52
tests/libxlxml2domconfigdata/single-serial.json
Normal file
52
tests/libxlxml2domconfigdata/single-serial.json
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
{
|
||||||
|
"c_info": {
|
||||||
|
"type": "hvm",
|
||||||
|
"name": "test-hvm",
|
||||||
|
"uuid": "2147d599-9cc6-c0dc-92ab-4064b5446e9b"
|
||||||
|
},
|
||||||
|
"b_info": {
|
||||||
|
"max_vcpus": 4,
|
||||||
|
"avail_vcpus": [
|
||||||
|
0,
|
||||||
|
1,
|
||||||
|
2,
|
||||||
|
3
|
||||||
|
],
|
||||||
|
"max_memkb": 1048576,
|
||||||
|
"target_memkb": 1048576,
|
||||||
|
"shadow_memkb": 1234,
|
||||||
|
"sched_params": {
|
||||||
|
|
||||||
|
},
|
||||||
|
"acpi": "True",
|
||||||
|
"apic": "True",
|
||||||
|
"type.hvm": {
|
||||||
|
"pae": "True",
|
||||||
|
"nographic": "True",
|
||||||
|
"vga": {
|
||||||
|
"kind": "none"
|
||||||
|
},
|
||||||
|
"vnc": {
|
||||||
|
"enable": "False"
|
||||||
|
},
|
||||||
|
"sdl": {
|
||||||
|
"enable": "False"
|
||||||
|
},
|
||||||
|
"spice": {
|
||||||
|
|
||||||
|
},
|
||||||
|
"serial": "pty",
|
||||||
|
"boot": "c",
|
||||||
|
"rdm": {
|
||||||
|
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"arch_arm": {
|
||||||
|
|
||||||
|
},
|
||||||
|
"arch_x86": {
|
||||||
|
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"on_reboot": "restart"
|
||||||
|
}
|
25
tests/libxlxml2domconfigdata/single-serial.xml
Normal file
25
tests/libxlxml2domconfigdata/single-serial.xml
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
<domain type='xen'>
|
||||||
|
<name>test-hvm</name>
|
||||||
|
<description>None</description>
|
||||||
|
<uuid>2147d599-9cc6-c0dc-92ab-4064b5446e9b</uuid>
|
||||||
|
<memory>1048576</memory>
|
||||||
|
<currentMemory>1048576</currentMemory>
|
||||||
|
<vcpu>4</vcpu>
|
||||||
|
<on_poweroff>destroy</on_poweroff>
|
||||||
|
<on_reboot>restart</on_reboot>
|
||||||
|
<on_crash>destroy</on_crash>
|
||||||
|
<clock offset='utc'/>
|
||||||
|
<os>
|
||||||
|
<type>hvm</type>
|
||||||
|
<loader>/usr/lib/xen/boot/hvmloader</loader>
|
||||||
|
<boot dev='hd'/>
|
||||||
|
</os>
|
||||||
|
<features>
|
||||||
|
<apic/>
|
||||||
|
<acpi/>
|
||||||
|
<pae/>
|
||||||
|
</features>
|
||||||
|
<devices>
|
||||||
|
<serial type='pty'/>
|
||||||
|
</devices>
|
||||||
|
</domain>
|
@ -208,6 +208,9 @@ mymain(void)
|
|||||||
|
|
||||||
DO_TEST("max-eventchannels-hvm");
|
DO_TEST("max-eventchannels-hvm");
|
||||||
|
|
||||||
|
DO_TEST("single-serial");
|
||||||
|
DO_TEST("multiple-serial");
|
||||||
|
|
||||||
unlink("libxl-driver.log");
|
unlink("libxl-driver.log");
|
||||||
|
|
||||||
testXLFreeDriver(driver);
|
testXLFreeDriver(driver);
|
||||||
|
Loading…
Reference in New Issue
Block a user