* [Qemu-devel] Re: [PATCH 4/7] Make error handling more consistent in img_create() and img_resize()
2010-12-06 14:25 ` [Qemu-devel] [PATCH 4/7] Make error handling more consistent in img_create() and img_resize() Jes.Sorensen
@ 2010-12-06 14:58 ` Stefan Hajnoczi
2010-12-06 15:25 ` Kevin Wolf
1 sibling, 0 replies; 6+ messages in thread
From: Stefan Hajnoczi @ 2010-12-06 14:58 UTC (permalink / raw)
To: Jes.Sorensen; +Cc: kwolf, qemu-devel
On Mon, Dec 06, 2010 at 03:25:37PM +0100, Jes.Sorensen@redhat.com wrote:
> From: Jes Sorensen <Jes.Sorensen@redhat.com>
>
> Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
> ---
> qemu-img.c | 12 ++++++++----
> 1 files changed, 8 insertions(+), 4 deletions(-)
Reviewed-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
^ permalink raw reply [flat|nested] 6+ messages in thread
* [Qemu-devel] Re: [PATCH 4/7] Make error handling more consistent in img_create() and img_resize()
2010-12-06 14:25 ` [Qemu-devel] [PATCH 4/7] Make error handling more consistent in img_create() and img_resize() Jes.Sorensen
2010-12-06 14:58 ` [Qemu-devel] " Stefan Hajnoczi
@ 2010-12-06 15:25 ` Kevin Wolf
2010-12-06 15:32 ` Jes Sorensen
1 sibling, 1 reply; 6+ messages in thread
From: Kevin Wolf @ 2010-12-06 15:25 UTC (permalink / raw)
To: Jes.Sorensen; +Cc: stefanha, qemu-devel
Am 06.12.2010 15:25, schrieb Jes.Sorensen@redhat.com:
> From: Jes Sorensen <Jes.Sorensen@redhat.com>
>
> Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
> ---
> 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
^ permalink raw reply [flat|nested] 6+ messages in thread
* [Qemu-devel] Re: [PATCH 4/7] Make error handling more consistent in img_create() and img_resize()
2010-12-06 15:25 ` Kevin Wolf
@ 2010-12-06 15:32 ` Jes Sorensen
0 siblings, 0 replies; 6+ messages in thread
From: Jes Sorensen @ 2010-12-06 15:32 UTC (permalink / raw)
To: Kevin Wolf; +Cc: stefanha, qemu-devel
On 12/06/10 16:25, Kevin Wolf wrote:
>> }
>> 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:
Grrrrr I am an idiot!
Sorry about the noise, I was sure I had tested that last change. Fix
coming up in a few minutes.
Cheers,
Jes
^ permalink raw reply [flat|nested] 6+ messages in thread
* [Qemu-devel] [PATCH 4/7] Make error handling more consistent in img_create() and img_resize()
@ 2010-12-06 15:45 Jes.Sorensen
2010-12-06 15:57 ` [Qemu-devel] " Kevin Wolf
0 siblings, 1 reply; 6+ messages in thread
From: Jes.Sorensen @ 2010-12-06 15:45 UTC (permalink / raw)
To: kwolf; +Cc: stefanha, qemu-devel
From: Jes Sorensen <Jes.Sorensen@redhat.com>
Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
---
qemu-img.c | 14 +++++++++-----
1 files changed, 9 insertions(+), 5 deletions(-)
diff --git a/qemu-img.c b/qemu-img.c
index aded72d..2deac67 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,
@@ -1432,7 +1434,7 @@ static int img_resize(int argc, char **argv)
int c, ret, relative;
const char *filename, *fmt, *size;
int64_t n, total_size;
- BlockDriverState *bs;
+ BlockDriverState *bs = NULL;
QEMUOptionParameter *param;
QEMUOptionParameter resize_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;
}
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;
}
if (relative) {
--
1.7.3.2
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [Qemu-devel] Re: [PATCH 4/7] Make error handling more consistent in img_create() and img_resize()
2010-12-06 15:57 ` [Qemu-devel] " Kevin Wolf
@ 2010-12-06 15:57 ` Jes Sorensen
0 siblings, 0 replies; 6+ messages in thread
From: Jes Sorensen @ 2010-12-06 15:57 UTC (permalink / raw)
To: Kevin Wolf; +Cc: stefanha, qemu-devel
On 12/06/10 16:57, Kevin Wolf wrote:
> bdrv_delete doesn't check for NULL, so this still isn't enough. Try
> something like "qemu-img resize -f vmdx foo +0" and you'll get a segfault.
Grrrr :(
It's a bummer things are so inconsistent throughout QEMU, most of the
free() functions can handle it.
Updated patch in a minute - sorry.
Thanks,
Jes
^ permalink raw reply [flat|nested] 6+ messages in thread
* [Qemu-devel] Re: [PATCH 4/7] Make error handling more consistent in img_create() and img_resize()
2010-12-06 15:45 [Qemu-devel] [PATCH 4/7] Make error handling more consistent in img_create() and img_resize() Jes.Sorensen
@ 2010-12-06 15:57 ` Kevin Wolf
2010-12-06 15:57 ` Jes Sorensen
0 siblings, 1 reply; 6+ messages in thread
From: Kevin Wolf @ 2010-12-06 15:57 UTC (permalink / raw)
To: Jes.Sorensen; +Cc: stefanha, qemu-devel
Am 06.12.2010 16:45, schrieb Jes.Sorensen@redhat.com:
> From: Jes Sorensen <Jes.Sorensen@redhat.com>
>
> Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
> ---
> qemu-img.c | 14 +++++++++-----
> 1 files changed, 9 insertions(+), 5 deletions(-)
> @@ -1432,7 +1434,7 @@ static int img_resize(int argc, char **argv)
> int c, ret, relative;
> const char *filename, *fmt, *size;
> int64_t n, total_size;
> - BlockDriverState *bs;
> + BlockDriverState *bs = NULL;
> QEMUOptionParameter *param;
> QEMUOptionParameter resize_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;
> }
> 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;
> }
>
> if (relative) {
bdrv_delete doesn't check for NULL, so this still isn't enough. Try
something like "qemu-img resize -f vmdx foo +0" and you'll get a segfault.
Kevin
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2010-12-06 15:57 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-12-06 15:45 [Qemu-devel] [PATCH 4/7] Make error handling more consistent in img_create() and img_resize() Jes.Sorensen
2010-12-06 15:57 ` [Qemu-devel] " Kevin Wolf
2010-12-06 15:57 ` Jes Sorensen
-- strict thread matches above, loose matches on Subject: below --
2010-12-06 14:25 [Qemu-devel] [PATCH v3 0/7] Cleanup qemu-img code Jes.Sorensen
2010-12-06 14:25 ` [Qemu-devel] [PATCH 4/7] Make error handling more consistent in img_create() and img_resize() Jes.Sorensen
2010-12-06 14:58 ` [Qemu-devel] " Stefan Hajnoczi
2010-12-06 15:25 ` Kevin Wolf
2010-12-06 15:32 ` Jes Sorensen
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).