On 07/01/14 17:42, Eric Blake wrote:
On 07/01/2014 09:31 AM, Peter Krempa wrote:
> We have the following matrix of possible arguments handled by the logic
> statement touched by this patch:
> | flags & _REUSE_EXT | !(flags & _REUSE_EXT)
> -------+--------------------+----------------------
> format| (1) | (2)
> -------+--------------------+----------------------
> !format| (3) | (4)
> -------+--------------------+----------------------
>
> In cases 1 and 2 the user provided a format, in cases 3 and 4 not. The
> user requests to use a pre-existing image in 1 and 3 and libvirt shall
s/shall/will/
> create a new image in 2 and 4.
>
> The difference between cases 3 and 4 is that for 3 the format is probed
> from the user-provided image, whereas in 4 we just use the existing disk
> format.
With the further caveat that if the _SHALLOW flag was requested, we are
guaranteed the probe is safe (a shallow image implies a backing file,
but raw cannot have a backing file, and probing is only a security hole
if raw is probed)
>
> The current code would treat cases 1,3 and 4 correctly but in case 2 the
> format provided by the user would be ignored.
>
> The particular piece of code was broken in commit 35c7701c64508f975dfeb8
> but since it was introduced a few commits before that it was never
> released as working.
> ---
> src/qemu/qemu_driver.c | 37 +++++++++++++++++++++----------------
> 1 file changed, 21 insertions(+), 16 deletions(-)
ACK. I'll take care of pushing the fix to the affected maint branches,
but yours needs to go in for 1.2.6.
Pushed; Thanks.
Peter