libvirt/docs
Eric Blake 6cc4d6a3fe 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>
2013-11-21 17:29:47 -07:00
..
api_extension xen_xs: name xendConfigVersion magic numbers 2012-02-01 16:28:17 -07:00
devhelp maint: consolidate several .gitignore files 2012-02-03 15:27:16 -07:00
html maint: consolidate several .gitignore files 2012-02-03 15:27:16 -07:00
internals Merge virCommandPreserveFD / virCommandTransferFD 2013-07-18 12:18:24 +01:00
schemas storage: use valid XML for awkward volume names 2013-11-21 17:29:47 -07:00
32favicon.png
404.html.in Fix multiple formatting problems in HTML docs 2013-05-03 15:56:15 +01:00
acl.html.in Add documentation for access control system 2013-08-09 17:13:02 +01:00
aclpolkit.html.in docs: aclpolkit: Fix a heading typo 2013-10-04 13:38:57 -04:00
api_extension.html.in Fix multiple formatting problems in HTML docs 2013-05-03 15:56:15 +01:00
api.html.in Fix multiple formatting problems in HTML docs 2013-05-03 15:56:15 +01:00
apibuild.py Test for object identity when checking for None in Python 2013-08-23 08:12:26 +02:00
apps.html.in add SystemTap to apps using libvirt 2013-11-06 15:26:35 -07:00
archdomain.html.in Fix multiple formatting problems in HTML docs 2013-05-03 15:56:15 +01:00
architecture.fig
architecture.gif
architecture.html.in Fix multiple formatting problems in HTML docs 2013-05-03 15:56:15 +01:00
archnetwork.html.in Fix multiple formatting problems in HTML docs 2013-05-03 15:56:15 +01:00
archnode.html.in Fix multiple formatting problems in HTML docs 2013-05-03 15:56:15 +01:00
archstorage.html.in Fix multiple formatting problems in HTML docs 2013-05-03 15:56:15 +01:00
auth.html.in Add documentation for access control system 2013-08-09 17:13:02 +01:00
bindings.html.in Fix multiple formatting problems in HTML docs 2013-05-03 15:56:15 +01:00
bugs.html.in docs: fix some typos about 'informations' 2013-10-22 09:47:19 +01:00
cgroups.html.in Improve cgroups docs to cover systemd integration 2013-11-12 11:23:00 +00:00
compiling.html.in build: honor autogen.sh --no-git 2013-07-09 16:15:29 -06:00
contact.html.in Document security reporting & handling process 2013-07-01 11:08:58 +08:00
csharp.html.in Fix multiple formatting problems in HTML docs 2013-05-03 15:56:15 +01:00
deployment.html.in Fix multiple formatting problems in HTML docs 2013-05-03 15:56:15 +01:00
devguide.html.in Fix multiple formatting problems in HTML docs 2013-05-03 15:56:15 +01:00
docs.html.in Fix multiple formatting problems in HTML docs 2013-05-03 15:56:15 +01:00
downloads.html.in Fix multiple formatting problems in HTML docs 2013-05-03 15:56:15 +01:00
drivers.html.in Fix multiple formatting problems in HTML docs 2013-05-03 15:56:15 +01:00
drvesx.html.in Fix multiple formatting problems in HTML docs 2013-05-03 15:56:15 +01:00
drvhyperv.html.in Fix multiple formatting problems in HTML docs 2013-05-03 15:56:15 +01:00
drvlxc.html.in Add some notes about security considerations when using LXC 2013-09-12 11:48:29 +01:00
drvopenvz.html.in Fix multiple formatting problems in HTML docs 2013-05-03 15:56:15 +01:00
drvparallels.html.in Fix multiple formatting problems in HTML docs 2013-05-03 15:56:15 +01:00
drvphyp.html.in Fix multiple formatting problems in HTML docs 2013-05-03 15:56:15 +01:00
drvqemu.html.in Fix docs generator regression in previous commit 2013-05-03 16:58:46 +01:00
drvremote.html.in Fix multiple formatting problems in HTML docs 2013-05-03 15:56:15 +01:00
drvtest.html.in Fix multiple formatting problems in HTML docs 2013-05-03 15:56:15 +01:00
drvuml.html.in Fix multiple formatting problems in HTML docs 2013-05-03 15:56:15 +01:00
drvvbox.html.in Move VirtualBox driver into libvirtd 2013-05-16 16:28:53 +01:00
drvvmware.html.in VMware: Initial VMware Fusion support 2013-09-29 18:40:36 +08:00
drvxen.html.in Fix multiple formatting problems in HTML docs 2013-05-03 15:56:15 +01:00
errors.html.in Fix multiple formatting problems in HTML docs 2013-05-03 15:56:15 +01:00
et.png
firewall.html.in Fix multiple formatting problems in HTML docs 2013-05-03 15:56:15 +01:00
footer_corner.png
footer_pattern.png
format.html.in Fix multiple formatting problems in HTML docs 2013-05-03 15:56:15 +01:00
formatcaps.html.in Fix multiple formatting problems in HTML docs 2013-05-03 15:56:15 +01:00
formatdomain.html.in qemu: Add support for paravirtual spinlocks in the guest 2013-11-08 09:44:42 +01:00
formatnetwork.html.in Add forwarder attribute to <dns/> element 2013-09-17 17:47:33 -06:00
formatnode.html.in docs: fix usb node device sub-element names 2013-08-15 11:40:50 +02:00
formatnwfilter.html.in docs: fix a typo in formatnwfilter.html.in 2013-11-15 06:00:49 -07:00
formatsecret.html.in docs: Update formatsecrets to include more examples of each type 2013-08-20 13:27:44 -04:00
formatsnapshot.html.in Fix multiple formatting problems in HTML docs 2013-05-03 15:56:15 +01:00
formatstorage.html.in storage: document existing pools 2013-10-16 09:57:31 -06:00
formatstorageencryption.html.in Fix multiple formatting problems in HTML docs 2013-05-03 15:56:15 +01:00
genaclperms.pl Add documentation for access control system 2013-08-09 17:13:02 +01:00
generic.css docs: Add some style and color to the HTML documentation 2013-01-18 15:36:38 +01:00
goals.html.in Fix multiple formatting problems in HTML docs 2013-05-03 15:56:15 +01:00
hacking1.xsl maint: tweak use of <a> in HACKING 2013-07-09 11:49:20 -06:00
hacking2.xsl maint: tweak use of <a> in HACKING 2013-07-09 11:49:20 -06:00
hacking.html.in maint: enforce comma style usage 2013-11-20 09:24:18 -07:00
hooks.html.in Fix multiple formatting problems in HTML docs 2013-05-03 15:56:15 +01:00
hvsupport.pl New internal migration APIs with extensible parameters 2013-06-25 01:13:16 +02:00
index.html.in Fix multiple formatting problems in HTML docs 2013-05-03 15:56:15 +01:00
index.py Test for object identity when checking for None in Python 2013-08-23 08:12:26 +02:00
internals.html.in Fix multiple formatting problems in HTML docs 2013-05-03 15:56:15 +01:00
intro.html.in Fix multiple formatting problems in HTML docs 2013-05-03 15:56:15 +01:00
java.html.in Fix multiple formatting problems in HTML docs 2013-05-03 15:56:15 +01:00
library.xen
libvirt-daemon-arch.fig
libvirt-daemon-arch.png build: regenerate .png files 2012-07-23 16:07:13 -06:00
libvirt-driver-arch.fig
libvirt-driver-arch.png build: regenerate .png files 2012-07-23 16:07:13 -06:00
libvirt-header-bg.png
libvirt-header-logo.png
libvirt-net-logical.fig
libvirt-net-logical.png build: regenerate .png files 2012-07-23 16:07:13 -06:00
libvirt-net-physical.fig
libvirt-net-physical.png build: regenerate .png files 2012-07-23 16:07:13 -06:00
libvirt-object-model.fig
libvirt-object-model.png build: regenerate .png files 2012-07-23 16:07:13 -06:00
libvirt-virConnect-example.fig internals: Update to include RPC and Lock links and add new data 2013-03-04 17:36:03 -05:00
libvirt-virConnect-example.png internals: Update to include RPC and Lock links and add new data 2013-03-04 17:36:03 -05:00
libvirt.css docs: define style of code blocks inside descriptions 2013-10-30 17:30:12 +01:00
libvirtLogo404.png Add a custom 404 error page for the website 2012-06-18 20:10:29 +01:00
libvirtLogo.png
locking.html.in Fix multiple formatting problems in HTML docs 2013-05-03 15:56:15 +01:00
logging.html.in docs: fix some typos about 'informations' 2013-10-22 09:47:19 +01:00
madeWith.png
main.css
Makefile.am docs: Load libvirt_access*.xml from build dir 2013-09-23 14:16:45 +02:00
migration-managed-direct.fig
migration-managed-direct.png
migration-managed-p2p.fig
migration-managed-p2p.png
migration-native.fig
migration-native.png
migration-tunnel.fig
migration-tunnel.png
migration-unmanaged-direct.fig
migration-unmanaged-direct.png
migration.html.in Fix minor typos in messages and docs 2013-07-30 07:07:33 -06:00
newapi.xsl docs: generate links from plain text documentation 2013-10-30 17:30:12 +01:00
news.html.in Release of libvirt-1.1.4 2013-11-04 12:30:41 +08:00
news.xsl
node.fig
node.gif
page.xsl Add documentation for access control system 2013-08-09 17:13:02 +01:00
pending.html.in Fix multiple formatting problems in HTML docs 2013-05-03 15:56:15 +01:00
php.html.in Fix multiple formatting problems in HTML docs 2013-05-03 15:56:15 +01:00
python.html.in Fix multiple formatting problems in HTML docs 2013-05-03 15:56:15 +01:00
relatedlinks.html.in Fix multiple formatting problems in HTML docs 2013-05-03 15:56:15 +01:00
remote.html.in Fix multiple formatting problems in HTML docs 2013-05-03 15:56:15 +01:00
search.php.code.in docs: autogenerate search.php 2012-08-10 10:58:38 +02:00
search.php.in Repair the search on libvirt.org 2013-09-12 17:18:32 +08:00
secureusage.html.in Add some notes about secure usage of libvirt 2013-10-15 11:33:01 +01:00
securityprocess.html.in Document security reporting & handling process 2013-07-01 11:08:58 +08:00
site.xsl Fix docs generator regression in previous commit 2013-05-03 16:58:46 +01:00
sitemap.html.in Add some notes about secure usage of libvirt 2013-10-15 11:33:01 +01:00
storage.html.in storage: fix RNG validation of gluster via netfs 2013-11-13 12:10:00 -07:00
structures.fig
subsite.xsl
testapi.html.in Fix multiple formatting problems in HTML docs 2013-05-03 15:56:15 +01:00
testsuites.html.in Fix multiple formatting problems in HTML docs 2013-05-03 15:56:15 +01:00
testtck.html.in Fix multiple formatting problems in HTML docs 2013-05-03 15:56:15 +01:00
todo.cfg-example
todo.pl Fix namespace bugs in API docs, todo page & hv support page 2013-05-07 11:19:04 +01:00
uri.html.in Fix multiple formatting problems in HTML docs 2013-05-03 15:56:15 +01:00
virshcmdref.html.in Fix multiple formatting problems in HTML docs 2013-05-03 15:56:15 +01:00
windows.html.in Point users to Virt-Viewer MSI installers for Windows builds 2013-05-07 15:29:37 +01:00
wrapstring.xsl