mirror of
https://gitlab.com/qemu-project/qemu
synced 2024-10-06 19:19:41 +00:00
vmdk: Fix local_err in vmdk_create
In vmdk_create and vmdk_create_extent, initialize local_err before using it, and don't leak it on error. Reported-by: Markus Armbruster <armbru@redhat.com> Signed-off-by: Fam Zheng <famz@redhat.com> Reviewed-by: Markus Armbruster <armbru@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
parent
675036e4da
commit
c13959c745
|
@ -1534,7 +1534,7 @@ static int vmdk_create_extent(const char *filename, int64_t filesize,
|
||||||
int ret, i;
|
int ret, i;
|
||||||
BlockDriverState *bs = NULL;
|
BlockDriverState *bs = NULL;
|
||||||
VMDK4Header header;
|
VMDK4Header header;
|
||||||
Error *local_err;
|
Error *local_err = NULL;
|
||||||
uint32_t tmp, magic, grains, gd_sectors, gt_size, gt_count;
|
uint32_t tmp, magic, grains, gd_sectors, gt_size, gt_count;
|
||||||
uint32_t *gd_buf = NULL;
|
uint32_t *gd_buf = NULL;
|
||||||
int gd_buf_size;
|
int gd_buf_size;
|
||||||
|
@ -1700,7 +1700,7 @@ static int vmdk_create(const char *filename, QEMUOptionParameter *options,
|
||||||
{
|
{
|
||||||
int idx = 0;
|
int idx = 0;
|
||||||
BlockDriverState *new_bs = NULL;
|
BlockDriverState *new_bs = NULL;
|
||||||
Error *local_err;
|
Error *local_err = NULL;
|
||||||
char *desc = NULL;
|
char *desc = NULL;
|
||||||
int64_t total_size = 0, filesize;
|
int64_t total_size = 0, filesize;
|
||||||
const char *adapter_type = NULL;
|
const char *adapter_type = NULL;
|
||||||
|
@ -1881,7 +1881,7 @@ static int vmdk_create(const char *filename, QEMUOptionParameter *options,
|
||||||
} else {
|
} else {
|
||||||
ret = bdrv_create_file(filename, options, &local_err);
|
ret = bdrv_create_file(filename, options, &local_err);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
error_setg_errno(errp, -ret, "Could not create image file");
|
error_propagate(errp, local_err);
|
||||||
goto exit;
|
goto exit;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1889,7 +1889,7 @@ static int vmdk_create(const char *filename, QEMUOptionParameter *options,
|
||||||
ret = bdrv_open(&new_bs, filename, NULL, NULL,
|
ret = bdrv_open(&new_bs, filename, NULL, NULL,
|
||||||
BDRV_O_RDWR | BDRV_O_PROTOCOL, NULL, &local_err);
|
BDRV_O_RDWR | BDRV_O_PROTOCOL, NULL, &local_err);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
error_setg_errno(errp, -ret, "Could not write description");
|
error_propagate(errp, local_err);
|
||||||
goto exit;
|
goto exit;
|
||||||
}
|
}
|
||||||
ret = bdrv_pwrite(new_bs, desc_offset, desc, desc_len);
|
ret = bdrv_pwrite(new_bs, desc_offset, desc, desc_len);
|
||||||
|
|
Loading…
Reference in a new issue