Am 06.12.2010 15:25, schrieb [email protected]:
> From: Jes Sorensen <[email protected]>
>
> Signed-off-by: Jes Sorensen <[email protected]>
> ---
> qemu-img.c | 12 ++++++++----
> 1 files changed, 8 insertions(+), 4 deletions(-)
>
> diff --git a/qemu-img.c b/qemu-img.c
> index aded72d..7f4939e 100644
> --- a/qemu-img.c
> +++ b/qemu-img.c
> @@ -314,13 +314,15 @@ static int img_create(int argc, char **argv)
> drv = bdrv_find_format(fmt);
> if (!drv) {
> error("Unknown file format '%s'", fmt);
> - return 1;
> + ret = -1;
> + goto out;
> }
>
> proto_drv = bdrv_find_protocol(filename);
> if (!proto_drv) {
> error("Unknown protocol '%s'", filename);
> - return 1;
> + ret = -1;
> + goto out;
> }
>
> create_options = append_option_parameters(create_options,
> @@ -1483,14 +1485,16 @@ static int img_resize(int argc, char **argv)
> param = parse_option_parameters("", resize_options, NULL);
> if (set_option_parameter(param, BLOCK_OPT_SIZE, size)) {
> /* Error message already printed when size parsing fails */
> - exit(1);
> + ret = -1;
> + goto out;
bs isn't initialized here, so the bdrv_delete(bs) after out: will crash.
> }
> n = get_option_parameter(param, BLOCK_OPT_SIZE)->value.n;
> free_option_parameters(param);
>
> bs = bdrv_new_open(filename, fmt, BDRV_O_FLAGS | BDRV_O_RDWR);
> if (!bs) {
> - return 1;
> + ret = -1;
> + goto out;
> }
Same here.
Heh, wanted to try it out to be sure, but the compiler notices that, so
it doesn't even build:
cc1: warnings being treated as errors
qemu-img.c: In function 'img_resize':
qemu-img.c:1497: error: 'bs' may be used uninitialized in this function
Kevin