[libvirt] [PATCH 03/30] storagefile: qcow1: Fix check for empty backing file

Daniel Henrique Barboza danielhb413 at gmail.com
Wed Oct 9 19:26:27 UTC 2019



On 10/7/19 6:49 PM, Cole Robinson wrote:
> >From f772b3d91fd the intention of this code seems to be to set

Is this leading '>' a bogus?

> format=NONE when the image does not have a backing file. However
> 'buf' here is the whole qcow1 file header. What we want to be
> checking is 'res' which is the parsed backing file path.
> qcowXGetBackingStore sets this to NULL when there's no backing file.
>
> Signed-off-by: Cole Robinson <crobinso at redhat.com>
> ---

This is unusual. Either the qcow file header 'buf' is being set to \0 when
there is no backing file (which would make the current code work even
when checking the wrong thing) or this is a bug that flew under the radar
from a long time.


Reviewed-by: Daniel Henrique Barboza <danielhb413 at gmail.com>

>   src/util/virstoragefile.c | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/src/util/virstoragefile.c b/src/util/virstoragefile.c
> index 1549067c48..016c8f0799 100644
> --- a/src/util/virstoragefile.c
> +++ b/src/util/virstoragefile.c
> @@ -578,7 +578,7 @@ qcow1GetBackingStore(char **res,
>        * used to store backing format */
>       *format = VIR_STORAGE_FILE_AUTO;
>       ret = qcowXGetBackingStore(res, NULL, buf, buf_size, false);
> -    if (ret == BACKING_STORE_OK && *buf == '\0')
> +    if (ret == BACKING_STORE_OK && !*res)
>           *format = VIR_STORAGE_FILE_NONE;
>       return ret;
>   }




More information about the libvir-list mailing list