[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>