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.
--
Eric Blake eblake redhat com +1-919-301-3266
Libvirt virtualization library
http://libvirt.org