On 4/15/20 2:49 AM, Markus Armbruster wrote:
qemu-img create, convert, amend, and measure use accumulate_options()
to merge multiple -o options.  This is broken for -o "":

     $ qemu-img create -f qcow2 -o backing_file=a -o "" -o 
backing_fmt=raw,size=1M new.qcow2
     qemu-img: warning: Could not verify backing image. This may become an 
error in future versions.
     Could not open 'a,backing_fmt=raw': No such file or directory
     Formatting 'new.qcow2', fmt=qcow2 size=1048576 
backing_file=a,,backing_fmt=raw cluster_size=65536 lazy_refcounts=off 
refcount_bits=16
     $ qemu-img info new.qcow2
     image: new.qcow2
     file format: qcow2
     virtual size: 1 MiB (1048576 bytes)
     disk size: 196 KiB
     cluster_size: 65536
--> backing file: a,backing_fmt=raw
     Format specific information:
         compat: 1.1
         lazy refcounts: false
         refcount bits: 16
         corrupt: false

Merging these three -o the obvious way is wrong, because it results in
an unwanted ',' escape:

     backing_file=a,,backing_fmt=raw,size=1M
                   ~~

We could silently drop -o "", but Kevin asked me to reject it instead.

Signed-off-by: Markus Armbruster <arm...@redhat.com>
---
  qemu-img.c | 6 ++++--
  1 file changed, 4 insertions(+), 2 deletions(-)

This results in the error message:
qemu-img: Invalid option list:

with a trailing space and no indication that it was an empty string we were trying to warn about. But that's tolerable.

Reviewed-by: Eric Blake <ebl...@redhat.com>

--
Eric Blake, Principal Software Engineer
Red Hat, Inc.           +1-919-301-3226
Virtualization:  qemu.org | libvirt.org


Reply via email to