libvirt/tests
Eric Blake 45d40bcf45 storage: use valid XML for awkward volume names
$ touch /var/lib/libvirt/images/'a<b>c'
$ virsh pool-refresh default
$ virsh vol-dumpxml 'a<b>c' default | head -n2
<volume>
  <name>a<b>c</name>

Oops.  That's not valid XML.  And when we fix the XML
generation, it fails RelaxNG validation.

I'm also tired of seeing <key>(null)</key> in the example
output for volume xml; while we used NULLSTR() to avoid
a NULL deref rather than relying on glibc's printf
extension behavior, it's even better if we avoid the issue
in the first place.  But this requires being careful that
we don't invalidate any storage backends that were relying
on key being unassigned during virStoragVolCreateXML[From].

I would have split this into two patches (one for escaping,
one for avoiding <key>(null)</key>), but since they both
end up touching a lot of the same test files, I ended up
merging it into one.

Note that this patch allows pretty much any volume name
that can appear in a directory (excluding . and .. because
those are special), but does nothing to change the current
(unenforced) RelaxNG claim that pool names will consist
only of letters, numbers, _, -, and +.  Tightening the C
code to match RelaxNG patterns and/or relaxing the grammar
to match the C code for pool names is a task for another
day (but remember, we DID recently tighten C code for
domain names to exclude a leading '.').

* src/conf/storage_conf.c (virStoragePoolSourceFormat)
(virStoragePoolDefFormat, virStorageVolTargetDefFormat)
(virStorageVolDefFormat): Escape user-controlled strings.
(virStorageVolDefParseXML): Parse key, for use in unit tests.
* src/storage/storage_driver.c (storageVolCreateXML)
(storageVolCreateXMLFrom): Ensure parsed key doesn't confuse
volume creation.
* docs/schemas/basictypes.rng (volName): Relax definition.
* tests/storagepoolxml2xmltest.c (mymain): Test it.
* tests/storagevolxml2xmltest.c (mymain): Likewise.
* tests/storagepoolxml2xmlin/pool-dir-naming.xml: New file.
* tests/storagepoolxml2xmlout/pool-dir-naming.xml: Likewise.
* tests/storagevolxml2xmlin/vol-file-naming.xml: Likewise.
* tests/storagevolxml2xmlout/vol-file-naming.xml: Likewise.
* tests/storagevolxml2xmlout/vol-*.xml: Fix fallout.

Signed-off-by: Eric Blake <eblake@redhat.com>
(cherry picked from commit 6cc4d6a3fe)
2014-03-10 09:16:58 -04:00
..
capabilityschemadata qemu: Implement CPUs check against machine type's cpu-max 2013-07-01 14:30:42 +02:00
commanddata build: clean up stray files found by 'make distcheck' 2013-05-06 14:01:08 -06:00
confdata Change the default of mdns_adv to false 2012-03-27 09:54:49 -06:00
cputestdata tests: Add more tests for virConnectBaselineCPU 2014-01-28 22:14:36 +01:00
domainschemadata Add XML config for resource partitions 2013-04-15 17:35:31 +01:00
domainsnapshotxml2xmlin snapshot: new XML for external system checkpoint 2012-11-02 09:56:23 -06:00
domainsnapshotxml2xmlout qemu: auto-add pci-root controller for pc machine types 2013-04-25 13:05:10 +02:00
fchostdata/fc_host tests: Add tests for fc_host 2013-05-13 17:24:18 +08:00
interfaceschemadata Update interface.rng and xml test files to match netcf 0.1.5 2010-01-19 21:13:03 +01:00
lxcxml2xmldata LXC: Fix handling of RAM filesystem size units 2013-10-15 12:58:52 +02:00
lxcxml2xmloutdata LXC: Fix handling of RAM filesystem size units 2013-10-15 12:58:52 +02:00
networkxml2confdata Add forwarder attribute to <dns/> element 2013-09-17 17:47:33 -06:00
networkxml2xmlin Add forwarder attribute to <dns/> element 2013-09-17 17:47:33 -06:00
networkxml2xmlout Add forwarder attribute to <dns/> element 2013-09-17 17:47:33 -06:00
networkxml2xmlupdatein Test network update XML parsing 2013-08-28 08:05:46 +02:00
networkxml2xmlupdateout Test network update XML parsing 2013-08-28 08:05:46 +02:00
nodedevschemadata nodedev: add iommuGroup to node device object 2013-06-26 14:10:56 -04:00
nodeinfodata nodeinfotest: Add test data from a AMD bulldozer machine. 2012-11-13 00:35:36 +01:00
nwfilterxml2xmlin nwfilter: Add support for ipset 2012-05-21 06:26:34 -04:00
nwfilterxml2xmlout nwfilter: Add support for ipset 2012-05-21 06:26:34 -04:00
qemuhelpdata qemu: Support setting the 'removable' flag for USB disks 2013-09-02 14:45:38 +02:00
qemuhotplugtestdata qemuhotplugtest: Add tests for virtio SCSI disk hotplug 2013-08-26 16:09:56 +02:00
qemuxml2argvdata qemu: don't use deprecated -no-kvm-pit-reinjection 2013-11-13 10:33:44 +01:00
qemuxml2xmloutdata Add pcihole64 element to root PCI controllers 2013-08-27 17:42:29 +02:00
qemuxmlnsdata qemu: Set QEMU_AUDIO_DRV=none with -nographic 2013-09-02 16:53:39 -04:00
securityselinuxlabeldata selinux: enhance test to cover nfs label failure 2013-08-20 10:46:58 -06:00
sexpr2xmldata storage: treat 'aio' like 'raw' at parse time 2012-10-19 17:35:09 -06:00
storagepoolschemadata schema: require target path in storage pool xml 2013-05-17 08:33:22 +02:00
storagepoolxml2xmlin storage: use valid XML for awkward volume names 2014-03-10 09:16:58 -04:00
storagepoolxml2xmlout storage: use valid XML for awkward volume names 2014-03-10 09:16:58 -04:00
storagevolschemadata schema: make source optional in volume XML 2013-05-17 08:35:08 +02:00
storagevolxml2argvdata Always specify qcow2 compat level on qemu-img command line 2013-08-27 12:45:58 +02:00
storagevolxml2xmlin storage: use valid XML for awkward volume names 2014-03-10 09:16:58 -04:00
storagevolxml2xmlout storage: use valid XML for awkward volume names 2014-03-10 09:16:58 -04:00
sysinfodata Implement minimal sysinfo for ARM platforms 2013-04-04 11:07:31 +01:00
vmwareverdata VMware: Add Fusion version test 2013-09-30 16:58:37 -05:00
vmx2xmldata VMX: Add a VMWare Fusion 5 configuration for tests 2013-09-17 14:10:41 -05:00
xencapsdata Add suspend info to Xen, LXC and UML hypervisor capabilities 2011-11-30 10:12:30 +00:00
xmconfigdata numad: Always output 'placement' of <vcpu> 2012-05-08 16:57:37 -06:00
xml2sexprdata Xen: Fix <clock> handling 2012-04-02 09:33:54 -06:00
xml2vmxdata VMX: Add a VMWare Fusion 5 configuration for tests 2013-09-17 14:10:41 -05:00
.valgrind.supp valgrind: Adjust filter for _dl_allocate_tls 2013-08-01 17:04:28 -04:00
capabilityschematest Make test suite output less verbose 2010-01-15 16:28:05 +00:00
commandhelper.c testutils: Resolve Coverity issues 2013-07-11 14:18:11 -04:00
commandtest.c Make virCommand env handling robust in setuid env 2013-10-29 16:10:47 +00:00
cpuset virBitmapParse: Fix behavior in case of error and fix up callers 2013-08-22 11:38:36 +02:00
cputest.c tests: Add more tests for virConnectBaselineCPU 2014-01-28 22:14:36 +01:00
define-dev-segfault numad: Always output 'placement' of <vcpu> 2012-05-08 16:57:37 -06:00
domainschematest LXC: Fix handling of RAM filesystem size units 2013-10-15 12:58:52 +02:00
domainsnapshotschematest Domain snapshot RNG and tests. 2010-05-20 13:50:03 -04:00
domainsnapshotxml2xmltest.c Introduce OOM reporting to virAsprintf 2013-07-10 11:07:31 +02:00
esxutilstest.c test: Refactor setting of dummy error handlers 2013-09-17 16:45:53 +02:00
eventtest.c Convert 'int i' to 'size_t i' in tests/ files 2013-07-10 17:40:13 +01:00
fchosttest.c Introduce OOM reporting to virAsprintf 2013-07-10 11:07:31 +02:00
fdstreamtest.c Introduce virFilePrintf() as a portable fprintf() 2013-05-31 10:51:33 -06:00
int-overflow tests: Don't use bash if we don't have to 2011-07-29 17:17:21 +02:00
interfaceschematest Make test suite output less verbose 2010-01-15 16:28:05 +00:00
interfacexml2xmltest.c Introduce OOM reporting to virAsprintf 2013-07-10 11:07:31 +02:00
jsontest.c tests: Coverity found new NULL_RETURNS 2013-08-01 17:04:28 -04:00
libvirtd-fail
libvirtd-pool
libvirtdconftest.c Adapt to VIR_ALLOC and virAsprintf in tests/* 2013-07-10 11:07:33 +02:00
lxcxml2xmltest.c LXC: Fix handling of RAM filesystem size units 2013-10-15 12:58:52 +02:00
Makefile.am Fix flaw in detecting log format 2013-10-29 16:10:22 +00:00
metadatatest.c tests: metadatatest: Quiesce errors on expected paths 2013-09-17 16:46:53 +02:00
networkschematest Make test suite output less verbose 2010-01-15 16:28:05 +00:00
networkxml2conftest.c Add forwarder attribute to <dns/> element 2013-09-17 17:47:33 -06:00
networkxml2xmltest.c Add forwarder attribute to <dns/> element 2013-09-17 17:47:33 -06:00
networkxml2xmlupdatetest.c Test network update XML parsing 2013-08-28 08:05:46 +02:00
nodedevschematest Make test suite output less verbose 2010-01-15 16:28:05 +00:00
nodedevxml2xmltest.c Introduce OOM reporting to virAsprintf 2013-07-10 11:07:31 +02:00
nodeinfotest.c Convert 'int i' to 'size_t i' in tests/ files 2013-07-10 17:40:13 +01:00
nwfilterschematest nwfilter: Add filter schema for nwfilter XML, extend domain XML schema 2010-04-06 11:09:46 -04:00
nwfilterxml2xmltest.c Remove virConnectPtr arg from virNWFilterDefParse* 2013-10-07 09:57:01 -04:00
object-locking.ml Rename 'DeviceMonitor' to 'NodeDeviceDriver' 2013-04-24 10:59:53 +01:00
oomtrace.pl Remove tabs from all perl files & enforce this 2012-07-30 13:09:57 +01:00
openvzutilstest.c Convert 'int i' to 'size_t i' in tests/ files 2013-07-10 17:40:13 +01:00
openvzutilstest.conf openvz: Add simple test for openvzReadNetworkConf 2011-06-01 11:58:15 +02:00
pkix_asn1_tab.c Add a test case for certificate validation 2011-07-22 15:18:32 +01:00
qemuagenttest.c qemuagenttest.c: Missing documentation (Timeout) 2013-08-22 13:51:26 -06:00
qemuargv2xmltest.c Introduce OOM reporting to virAsprintf 2013-07-10 11:07:31 +02:00
qemuhelptest.c qemu: Support setting the 'removable' flag for USB disks 2013-09-02 14:45:38 +02:00
qemuhotplugtest.c qemu: Add capability flag for usb-storage 2013-09-02 13:54:26 +02:00
qemumonitorjsontest.c Don't dereference NULL in qemumonitorjsontest 2013-09-20 13:46:13 +02:00
qemumonitortest.c Convert 'int i' to 'size_t i' in tests/ files 2013-07-10 17:40:13 +01:00
qemumonitortestutils.c Remove (nearly) all use of getuid()/getgid() 2013-10-29 16:19:00 +00:00
qemumonitortestutils.h tests: Add support for passing driver to qemu monitor 2013-08-26 16:09:55 +02:00
qemuxml2argvtest.c qemu: don't use deprecated -no-kvm-pit-reinjection 2013-11-13 10:33:44 +01:00
qemuxml2xmltest.c virSecurityLabelDefParseXML: Don't parse label on model='none' 2013-11-12 09:11:13 -05:00
qemuxmlnstest.c qemu: Add callback struct for qemuBuildCommandLine 2013-05-20 20:14:19 +08:00
read-bufsiz maint: avoid regression on copyright listings 2012-07-27 07:42:34 -06:00
read-non-seekable maint: avoid regression on copyright listings 2012-07-27 07:42:34 -06:00
reconnect.c test: Refactor setting of dummy error handlers 2013-09-17 16:45:53 +02:00
schematestutils.sh tests: skip schema validation tests if xmllint is missing 2013-08-23 15:23:44 -06:00
seclabeltest.c tests: uniformly report test failures 2013-02-25 17:38:11 -07:00
securityselinuxhelper.c selinux: enhance test to cover nfs label failure 2013-08-20 10:46:58 -06:00
securityselinuxlabeltest.c selinux: enhance test to cover nfs label failure 2013-08-20 10:46:58 -06:00
securityselinuxtest.c Adapt to VIR_ALLOC and virAsprintf in tests/* 2013-07-10 11:07:33 +02:00
sexpr2xmltest.c Fix handling of OOM when getting Xen dom ID 2013-09-25 18:12:08 +01:00
shunloadhelper.c shunloadtest: Resolve Coverity CHECKED_RETURN error 2013-05-21 09:22:21 -04:00
shunloadtest.c build: fix shunloadtest breakage 2013-07-29 13:09:39 -06:00
sockettest.c test: Refactor setting of dummy error handlers 2013-09-17 16:45:53 +02:00
ssh.c build: fix shunloadtest breakage 2013-07-29 13:09:39 -06:00
start maint: avoid regression on copyright listings 2012-07-27 07:42:34 -06:00
statstest.c test: Refactor setting of dummy error handlers 2013-09-17 16:45:53 +02:00
storagebackendsheepdogtest.c Build breaker - requires VIR_FROM_THIS 2013-05-10 08:52:43 -04:00
storagepoolschematest schema: require target path in storage pool xml 2013-05-17 08:33:22 +02:00
storagepoolxml2xmltest.c storage: use valid XML for awkward volume names 2014-03-10 09:16:58 -04:00
storagevolschematest schema: make source optional in volume XML 2013-05-17 08:35:08 +02:00
storagevolxml2argvtest.c Always specify qcow2 compat level on qemu-img command line 2013-08-27 12:45:58 +02:00
storagevolxml2xmltest.c storage: use valid XML for awkward volume names 2014-03-10 09:16:58 -04:00
sysinfotest.c Introduce OOM reporting to virAsprintf 2013-07-10 11:07:31 +02:00
test_conf.c viralloc: Report OOM error on failure 2013-07-10 11:07:31 +02:00
test_conf.sh rename tests/conftest.c 2013-03-19 13:13:28 -06:00
test-lib.sh test-lib: Make case skipping possible 2013-09-13 10:25:56 +02:00
testutils.c Fix format specifier for OOM test fprintfs 2013-09-24 16:56:53 +01:00
testutils.h test: Refactor setting of dummy error handlers 2013-09-17 16:45:53 +02:00
testutilslxc.c virCaps: get rid of defaultConsoleTargetType callback 2013-04-04 22:42:39 +02:00
testutilslxc.h Add support for setting init argv for LXC 2012-03-27 15:52:25 +01:00
testutilsqemu.c qemu: Don't add default memballoon device on ARM 2013-09-02 16:53:39 -04:00
testutilsqemu.h build: skip qemu in tests when !WITH_QEMU 2013-05-31 11:35:34 -06:00
testutilsxen.c virCaps: get rid of defaultConsoleTargetType callback 2013-04-04 22:42:39 +02:00
testutilsxen.h virCaps: get rid of defaultConsoleTargetType callback 2013-04-04 22:42:39 +02:00
utiltest.c test: Refactor setting of dummy error handlers 2013-09-17 16:45:53 +02:00
vcpupin maint: avoid regression on copyright listings 2012-07-27 07:42:34 -06:00
viratomictest.c Convert 'int i' to 'size_t i' in tests/ files 2013-07-10 17:40:13 +01:00
virauthconfigtest.c virutil: Move string related functions to virstring.c 2013-05-02 16:56:55 +02:00
virbitmaptest.c virbitmaptest: Shut coverity up in case of broken test 2013-08-19 15:54:43 +02:00
virbuftest.c Avoid crash on OOM in virbuftest 2013-09-25 18:12:09 +01:00
vircgroupmock.c Fix launching of VMs on when only logind part of systemd is present 2013-09-12 11:32:36 +01:00
vircgrouptest.c Fix launching of VMs on when only logind part of systemd is present 2013-09-12 11:32:36 +01:00
virdbustest.c tests: test negative number through dbus 2013-08-09 08:57:01 -06:00
virdrivermoduletest.c virutil: Move string related functions to virstring.c 2013-05-02 16:56:55 +02:00
virendiantest.c util: add virendian.h macros 2013-02-12 09:00:15 -07:00
virhashdata.h Rename hash.h and hash.c to virhash.h and virhash.c 2012-01-26 14:11:13 +00:00
virhashtest.c virAsprintf: correctly check return value 2013-07-18 14:05:46 +02:00
viridentitytest.c virutil: Move string related functions to virstring.c 2013-05-02 16:56:55 +02:00
virkeycodetest.c Add a test suite for keycode mapping functions 2013-04-08 10:03:20 +01:00
virkeyfiletest.c virutil: Move string related functions to virstring.c 2013-05-02 16:56:55 +02:00
virlockspacetest.c Avoid crash on OOM in virlockspacetest 2013-09-25 18:12:09 +01:00
virlogtest.c Fix flaw in detecting log format 2013-10-29 16:10:22 +00:00
virnetmessagetest.c Avoid use of uninitialized data in virnetmessagetest 2013-09-25 18:12:09 +01:00
virnetserverclientmock.c Add test case for virNetServerClient object identity code 2013-09-24 09:37:26 +01:00
virnetserverclienttest.c Add test case for virNetServerClient object identity code 2013-09-24 09:37:26 +01:00
virnetsockettest.c Remove (nearly) all use of getuid()/getgid() 2013-10-29 16:19:00 +00:00
virnettlscontexttest.c Test handling of non-existent x509 certs 2013-08-21 13:51:25 +01:00
virnettlshelpers.c Fix parallel runs of TLS test suites 2013-08-09 11:54:41 +01:00
virnettlshelpers.h Fix parallel runs of TLS test suites 2013-08-09 11:54:41 +01:00
virnettlssessiontest.c tests: Fix parallel runs of TLS test suites 2013-08-12 20:20:00 -06:00
virportallocatortest.c Avoid crash on OOM in virportallocatortest 2013-09-25 18:12:09 +01:00
virsh-all tests: Skip virsh-all test as expensive 2013-08-12 18:47:56 +02:00
virsh-optparse virsh: add snapshot-create-as memspec support 2012-11-07 09:04:18 -07:00
virsh-schedinfo Allow multiple parameters for schedinfo 2013-04-03 08:49:30 +02:00
virsh-synopsis maint: avoid regression on copyright listings 2012-07-27 07:42:34 -06:00
virsh-undefine build: avoid confusing make with raw name 'undefine' 2012-09-12 11:27:22 -06:00
virsh-uriprecedence tests: Don't test user config file if ran as root 2013-09-13 10:25:56 +02:00
virshtest.c Introduce OOM reporting to virAsprintf 2013-07-10 11:07:31 +02:00
virstoragetest.c Convert 'int i' to 'size_t i' in tests/ files 2013-07-10 17:40:13 +01:00
virstringtest.c Introduce virFilePrintf() as a portable fprintf() 2013-05-31 10:51:33 -06:00
virsystemdmock.c Add checking of dbus_message_iter_append_basic return value 2013-09-20 12:38:24 +01:00
virsystemdtest.c LXC: workaround machined uncleaned data with containers running systemd. 2013-09-30 16:47:23 +01:00
virt-aa-helper-test add vnc unix sockets to apparmor policy 2012-12-11 14:32:39 -07:00
virtimetest.c virutil: Move string related functions to virstring.c 2013-05-02 16:56:55 +02:00
viruritest.c tests/: Remove the whitespace before ";" 2013-05-21 23:41:45 +08:00
vmwarevertest.c VMware: Add Fusion version test 2013-09-30 16:58:37 -05:00
vmx2xmltest.c Don't print all test suite errors to stderr in vmx2xmltest 2013-09-25 18:12:09 +01:00
xencapstest.c Introduce OOM reporting to virAsprintf 2013-07-10 11:07:31 +02:00
xmconfigtest.c viralloc: Report OOM error on failure 2013-07-10 11:07:31 +02:00
xml2sexprtest.c Introduce OOM reporting to virAsprintf 2013-07-10 11:07:31 +02:00
xml2vmxtest.c VMX: Add a VMWare Fusion 5 configuration for tests 2013-09-17 14:10:41 -05:00