qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH 4/7] Make error handling more consistent in img_create() and img_resize()
  2010-12-06 14:25 [Qemu-devel] [PATCH v3 0/7] Cleanup qemu-img code Jes.Sorensen
@ 2010-12-06 14:25 ` Jes.Sorensen
  0 siblings, 0 replies; 4+ messages in thread
From: Jes.Sorensen @ 2010-12-06 14:25 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 |   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;
     }
     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] 4+ 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; 4+ 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] 4+ 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; 4+ 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] 4+ 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; 4+ 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] 4+ messages in thread

end of thread, other threads:[~2010-12-06 15:57 UTC | newest]

Thread overview: 4+ 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

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).