qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH v2 for-5.1 9/9] qemu-img: Reject broken -o ""


From: Eric Blake
Subject: Re: [PATCH v2 for-5.1 9/9] qemu-img: Reject broken -o ""
Date: Wed, 15 Apr 2020 07:56:49 -0500
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.6.0

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 <address@hidden>
---
  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 <address@hidden>

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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]