This repository was archived by the owner on Jan 22, 2026. It is now read-only.
File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ <domain type =' xen' >
2+ <name >TestGuest</name >
3+ <currentMemory >204800</currentMemory >
4+ <memory >409600</memory >
5+ <uuid >12345678-1234-1234-1234-123456789012</uuid >
6+ <os >
7+ <type >hvm</type >
8+ <loader >/usr/lib/xen/boot/hvmloader</loader >
9+ <boot dev =' cdrom' />
10+ </os >
11+ <features >
12+ <acpi /><apic />
13+ </features >
14+ <clock offset =" utc" />
15+ <on_poweroff >destroy</on_poweroff >
16+ <on_reboot >destroy</on_reboot >
17+ <on_crash >destroy</on_crash >
18+ <vcpu >5</vcpu >
19+ <devices >
20+ <emulator >/usr/lib/xen/bin/qemu-dm</emulator >
21+ <console device =' pty' />
22+ <disk type =' file' device =' disk' >
23+ <source file =' /ISO' s' />
24+ <target dev =' hda' />
25+ </disk >
26+ <disk type =' block' device =' cdrom' >
27+ <source dev =' /dev/loop0' />
28+ <target dev =' hdc' />
29+ <readonly />
30+ </disk >
31+
32+
33+ <input type =' mouse' bus =' ps2' />
34+ <graphics type =' sdl' />
35+ </devices >
36+ </domain >
Original file line number Diff line number Diff line change @@ -180,6 +180,11 @@ def testInstallFullyvirtDiskBlock(self):
180180 self ._compare (g , "install-fullyvirt-disk-block" , True )
181181
182182
183+ def testXMLEscaping (self ):
184+ g = self ._get_basic_fullyvirt_guest ()
185+ g .disks .append (virtinst .VirtualDisk ("/ISO's" , type = virtinst .VirtualDisk .TYPE_FILE , size = 5 ))
186+ self ._compare (g , "misc-xml-escaping" , True )
187+
183188
184189if __name__ == "__main__" :
185190 unittest .main ()
Original file line number Diff line number Diff line change @@ -180,7 +180,8 @@ def get_xml_config(self, disknode):
180180 else :
181181 ret += " <driver name='%(name)s' type='%(type)s'/>\n " % { "name" : self .driver_name , "type" : self .driver_type }
182182 if self .path is not None :
183- ret += " <source %(typeattr)s='%(disk)s'/>\n " % { "typeattr" : typeattr , "disk" : self .path }
183+ path = self .path .replace ("'" , "'" )
184+ ret += " <source %(typeattr)s='%(disk)s'/>\n " % { "typeattr" : typeattr , "disk" : path }
184185 if self .target is not None :
185186 disknode = self .target
186187 ret += " <target dev='%(disknode)s'/>\n " % { "disknode" : disknode }
You can’t perform that action at this time.
0 commit comments