[libvirt] Test results (was: Re: Valid characters in domain names?)

Daniel Veillard veillard at redhat.com
Mon Oct 4 11:07:40 UTC 2010


On Mon, Oct 04, 2010 at 11:26:32AM +0100, Richard W.M. Jones wrote:
> I tried creating several KVM domains with non-alnum names to see what
> actually happens.
> 
> The names as shown here are XML-encoded, ie. they are how they appear
> in the libvirt domain XML.
> 
> *** <name>&#x00;</name> ***
> 
> libvirt prevents me from defining this domain, with the following error:
> 
>   error: Failed to define domain from /tmp/chars.xml
>   error: at line 2: xmlParseCharRef: invalid xmlChar value 0
> 
> Am I specifying the XML correctly?

  Forbidden character in XML, we just can't use this.
http://www.w3.org/TR/REC-xml/#NT-Char defines the allowed character
ranges, bizarre control characters from start of ASCII are forbidden
not just 0, surrogates and values usually used as Byte Order Mark are
also excluded. And this is a Good Thing (TM) :-)

> *** <name>#</name> ***
> 
> virsh define - OK
> virsh list - OK
> virsh start - OK
> virt-viewer - OK
> virt-df - OK
> virsh destroy - OK
> virt-list-filesystems - OK

  assuming a QEmu/KVM guest, right ?

> Conclusion: RHBZ#639601 and RHBZ#639602 are just user error.  The
> reporter is typing something like:
> 
>   virt-list-filesystems #
> 
> but the shell takes the # character as a comment.  If instead you do:
> 
>   virt-list-filesystems '#'
> 
> or
> 
>   virt-list-filesystems \#
> 
> then it works fine.
> 
> *** <name>,</name> ***
> 
> virsh define - OK
> virsh list - OK
> virsh start - FAILED
> virt-viewer - n/a
> virt-df - OK
> virsh destroy - n/a
> virt-list-filesystems - OK
> 
> virsh start failed with the error:
> 
>   error: Failed to start domain ,
>   error: internal error process exited while connecting to monitor: Unknown subargument  to -name
> 
> This looks like a real bug.  The qemu driver should prevent domains
> from being created that contain characters that are special for the
> qemu command line.

  okay, we should make a bug

> *** <name>></name> ***
> 
> virsh define - OK
> virsh list - OK
> virsh start - OK
> virt-viewer - OK
> virt-df - OK
> virsh destroy - OK
> virt-list-filesystems - OK

  I'm rather surprized this didn't break qemu execution, interesting...

> *** <name>変な</name> ***
> 
> virsh define - OK
> virsh list - see below
> virsh start - OK
> virt-viewer - OK
> virt-df - OK
> virsh destroy - OK
> virt-list-filesystems - OK
> 
> 'virsh list' command is fine, except the 'State' columns don't line up
> because these two characters are wide chars.  You see something like
> this:
> 
>   - Win7x32              shut off
>   - [][]               shut off

 minor really, I would count this as a pass,

> *** <name>/</name> ***
> 
> virsh define - OK
> virsh list - OK
> virsh start - see below
> virt-viewer - OK
> virt-df - FAILED
> virsh destroy - OK
> virt-list-filesystems - FAILED
> 
> The domain starts OK, but the log file is created as
> "/var/log/libvirt/qemu/.log".  This is a bug, although sort of to be
> expected.
> 
> virt-df and virt-list-filesystems both failed.  This was because these
> programs use a heuristic to determine if the parameter passed is a
> libvirt domain name or a local disk image file.  Because "/" looks (a
> bit) like a local file, it tries to open it as such and fails.  The
> error message is:
> 
>   qemu: could not open disk image /: Is a directory
>   unexpected end of file when reading from daemon at /usr/bin/virt-list-filesystems line 131.
> 
> I think realistically libvirt should prevent domains with / anywhere
> in the name from being defined.

  at least for QEmu, yes

> *** <name>:</name> ***
> 
> virsh define - OK
> virsh list - OK
> virsh start - OK
> virt-viewer - OK
> virt-df - OK
> virsh destroy - OK
> virt-list-filesystems - OK
> 

  Thanks for doing this, we actually did better than I expected :-)

Daniel

-- 
Daniel Veillard      | libxml Gnome XML XSLT toolkit  http://xmlsoft.org/
daniel at veillard.com  | Rpmfind RPM search engine http://rpmfind.net/
http://veillard.com/ | virtualization library  http://libvirt.org/




More information about the libvir-list mailing list