[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