On Fri, Mar 01, 2013 at 12:33:49PM +0000, Matthew Booth wrote:
On Thu, 2013-02-28 at 16:02 +0000, Richard W.M. Jones wrote:
> + /* Find and pass the SELinux security label to the libvirt back end. */
> + if (libvirt_selinux_label (g, doc, &label, &imagelabel) == -1)
> + return -1;
> + if (label && imagelabel) {
> + guestfs_internal_set_libvirt_selinux_label (g, label, imagelabel);
> + guestfs_internal_set_libvirt_selinux_norelabel_disks (g, 1);
Do we need both internal apis? 1 seems to imply the other.
They're congruent, but I think it makes the code clearer not to
overload one API.
> + bool gotlabel = 0, gotimagelabel = 0;
gotlabel and gotimagelabel appear to be unused apart from assignment.
They are used later to ensure that we don't assign to the label_rtn /
imagelabel_rtn parameters twice (which would be a memory leak).
eg. If the XML had two <image/> elements.
> + if (nr_nodes == 0 || nr_nodes > 1)
> + return 0;
Not terribly important, but I wouldn't silently bomb out here if
nr_nodes > 1. If you're going to catch it at all I'd add a warning and
continue.
[...]
It's possible to supply multiple <seclabel/> elements, ie. libvirt
will parse that, but at the moment it wouldn't generate it. We should
also probably check that any seclabel element we do use has the
model=selinux property.
I'll have a look at whether it's possible to use xpath exprs to do all
of the above.
Rich.
--
Richard Jones, Virtualization Group, Red Hat
http://people.redhat.com/~rjones
virt-df lists disk usage of guests without needing to install any
software inside the virtual machine. Supports Linux and Windows.
http://people.redhat.com/~rjones/virt-df/