qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH] vmdk: Fix local_err in vmdk_create


From: Markus Armbruster
Subject: Re: [Qemu-devel] [PATCH] vmdk: Fix local_err in vmdk_create
Date: Wed, 28 May 2014 09:31:30 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3 (gnu/linux)

Fam Zheng <address@hidden> writes:

> In vmdk_create and vmdk_create_extent, initialize local_err before using
> it, and don't leak it on error.
>
> Reported-by: Markus Armbruster <address@hidden>
> Signed-off-by: Fam Zheng <address@hidden>
> ---
>  block/vmdk.c | 8 ++++----
>  1 file changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/block/vmdk.c b/block/vmdk.c
> index 480ea37..2b38f61 100644
> --- a/block/vmdk.c
> +++ b/block/vmdk.c
> @@ -1534,7 +1534,7 @@ static int vmdk_create_extent(const char *filename, 
> int64_t filesize,
>      int ret, i;
>      BlockDriverState *bs = NULL;
>      VMDK4Header header;
> -    Error *local_err;
> +    Error *local_err = NULL;
>      uint32_t tmp, magic, grains, gd_sectors, gt_size, gt_count;
>      uint32_t *gd_buf = NULL;
>      int gd_buf_size;
> @@ -1700,7 +1700,7 @@ static int vmdk_create(const char *filename, 
> QEMUOptionParameter *options,
>  {
>      int idx = 0;
>      BlockDriverState *new_bs = NULL;
> -    Error *local_err;
> +    Error *local_err = NULL;
>      char *desc = NULL;
>      int64_t total_size = 0, filesize;
>      const char *adapter_type = NULL;
> @@ -1881,7 +1881,7 @@ static int vmdk_create(const char *filename, 
> QEMUOptionParameter *options,
>      } else {
>          ret = bdrv_create_file(filename, options, &local_err);
>          if (ret < 0) {
> -            error_setg_errno(errp, -ret, "Could not create image file");
> +            error_propagate(errp, local_err);
>              goto exit;
>          }
>      }
> @@ -1889,7 +1889,7 @@ static int vmdk_create(const char *filename, 
> QEMUOptionParameter *options,
>      ret = bdrv_open(&new_bs, filename, NULL, NULL,
>                      BDRV_O_RDWR | BDRV_O_PROTOCOL, NULL, &local_err);
>      if (ret < 0) {
> -        error_setg_errno(errp, -ret, "Could not write description");
> +        error_propagate(errp, local_err);
>          goto exit;
>      }
>      ret = bdrv_pwrite(new_bs, desc_offset, desc, desc_len);

local_err and error_propagate() are actually superfluous, but I'll fix
that on top, along with many other instances.

Reviewed-by: Markus Armbruster <address@hidden>



reply via email to

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