On Sat, Apr 04, 2020 at 05:06:32PM +0100, Richard W.M. Jones wrote:
This allows us to be much more flexible about what commands can be
used. It also means we do not need to encode any special behaviour
for type or label parameters.
XXX
However one problem which is not addressed here: The $disk passed to
the shell script fragment must be updated, not replaced. This is
because currently the plugin has a file descriptor opened on this
file. If it is deleted by the script then the fd becomes invalid and
the plugin will no longer work. It's unclear if it is safe (from a
security point of view) for the plugin to reopen the disk by name
after the script has run.
I realise I didn't say why this is a problem for the consumer of the
plugin (which is different from why it may or may not be a security
problem).
Common commands you might want to use include:
nbdkit tmpdisk 16G command='virt-builder -o $disk $os --size $size'
nbdkit tmpdisk 16G command='qemu-img create -f $fmt $disk $size'
The problem is that these commands will delete and recreate the output
file, so will not work with the plugin as written. (Note that for
qemu-img create, the -n parameter is not sufficient - left as an
interesting puzzle for the reader to work out why.)
If the plugin is allowed to close and reopen $disk, and recalcuate the
size, then these commands would be fine.
Rich.
--
Richard Jones, Virtualization Group, Red Hat
http://people.redhat.com/~rjones
Read my programming and virtualization blog:
http://rwmj.wordpress.com
libguestfs lets you edit virtual machines. Supports shell scripting,
bindings from many languages.
http://libguestfs.org