[libvirt] [PATCH] schema: Allow spaces in paths
Cole Robinson
crobinso at redhat.com
Thu Aug 11 17:43:31 UTC 2016
On 08/11/2016 12:02 PM, Michal Privoznik wrote:
> Since ages filesystems allowed to have space characters in
> filenames and even directory names. In fact, on all major
> filesystems out there you can have whatever character you like
> except NULL. There's no reason why we should forbid users to not
> have spaces in their filenames. Moreover, if we do that only on
> RNG schema level while our XML parser/formatter crunches that
> happily.
>
There's a fedora bug about this particular issue:
https://bugzilla.redhat.com/show_bug.cgi?id=1353296
But for example this range still rejects other valid characters as well, like
unicode á . So maybe rather than a whitelist, we go the opposite way and make
this a minimal blacklist, or drop the validation entirely. Unless there's some
designated way to handle regex validation for unicode...
- Cole
> Signed-off-by: Michal Privoznik <mprivozn at redhat.com>
> ---
> docs/schemas/basictypes.rng | 8 ++---
> .../domainschemadata/domain-disk-source-space.xml | 36 ++++++++++++++++++++++
> 2 files changed, 40 insertions(+), 4 deletions(-)
> create mode 100644 tests/domainschemadata/domain-disk-source-space.xml
>
> diff --git a/docs/schemas/basictypes.rng b/docs/schemas/basictypes.rng
> index 474ad77..f2b7930 100644
> --- a/docs/schemas/basictypes.rng
> +++ b/docs/schemas/basictypes.rng
> @@ -247,25 +247,25 @@
>
> <define name="filePath">
> <data type="string">
> - <param name="pattern">[a-zA-Z0-9_\.\+\-\\&"'<>/%]+</param>
> + <param name="pattern">[a-zA-Z0-9_\.\+\-\\&"'<>/% ]+</param>
> </data>
> </define>
>
> <define name="dirPath">
> <data type="string">
> - <param name="pattern">[a-zA-Z0-9_\.\+\-\\&"'<>/%]+</param>
> + <param name="pattern">[a-zA-Z0-9_\.\+\-\\&"'<>/% ]+</param>
> </data>
> </define>
>
> <define name="absFilePath">
> <data type="string">
> - <param name="pattern">/[a-zA-Z0-9_\.\+\-\\&"'<>/%,:]+</param>
> + <param name="pattern">/[a-zA-Z0-9_\.\+\-\\&"'<>/%,: ]+</param>
> </data>
> </define>
>
> <define name="absDirPath">
> <data type="string">
> - <param name="pattern">/[a-zA-Z0-9_\.\+\-\\&"'<>/%]*</param>
> + <param name="pattern">/[a-zA-Z0-9_\.\+\-\\&"'<>/% ]*</param>
> </data>
> </define>
>
> diff --git a/tests/domainschemadata/domain-disk-source-space.xml b/tests/domainschemadata/domain-disk-source-space.xml
> new file mode 100644
> index 0000000..553b6c7
> --- /dev/null
> +++ b/tests/domainschemadata/domain-disk-source-space.xml
> @@ -0,0 +1,36 @@
> +<domain type='kvm'>
> + <name>dummy</name>
> + <uuid>aa86471a-e67b-41b1-8d7d-2dc37c2ac5ec</uuid>
> + <memory unit='KiB'>2097152</memory>
> + <currentMemory unit='KiB'>2097152</currentMemory>
> + <vcpu placement='static'>4</vcpu>
> + <os>
> + <type arch='x86_64' machine='pc-i440fx-2.5'>hvm</type>
> + </os>
> + <features>
> + <acpi/>
> + <apic/>
> + </features>
> + <on_poweroff>destroy</on_poweroff>
> + <on_reboot>restart</on_reboot>
> + <on_crash>restart</on_crash>
> + <pm>
> + <suspend-to-mem enabled='no'/>
> + <suspend-to-disk enabled='no'/>
> + </pm>
> + <devices>
> + <emulator>/usr/bin/qemu-system-x86_64</emulator>
> + <disk type='file' device='cdrom'>
> + <driver name='qemu' type='raw'/>
> + <source file='/a/path/with some space in it.iso'/>
> + <target dev='hda' bus='ide'/>
> + <readonly/>
> + <boot order='1'/>
> + <address type='drive' controller='0' bus='0' target='0' unit='0'/>
> + </disk>
> + <controller type='pci' index='0' model='pci-root'/>
> + <controller type='ide' index='0'>
> + <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
> + </controller>
> + </devices>
> +</domain>
>
More information about the libvir-list
mailing list