aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJes Sorensen <Jes.Sorensen@redhat.com>2010-12-06 15:25:36 +0100
committerKevin Wolf <kwolf@redhat.com>2010-12-14 15:44:21 +0100
commit31ca34b8cc2efe1b7e3f726dedb30c450a81abaf (patch)
treee942d3f2db45fd145d4732674ad7f2745d944e59
parent5bdf61fdd76b5ca7101353abbdbcd1ed692fa9e2 (diff)
img_convert(): Only try to free bs[] entries if bs is valid.
This allows for jumping to 'out:' consistently for error exit. Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
-rw-r--r--qemu-img.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/qemu-img.c b/qemu-img.c
index eca99c4a5d..aded72d49f 100644
--- a/qemu-img.c
+++ b/qemu-img.c
@@ -696,7 +696,8 @@ static int img_convert(int argc, char **argv)
if (bs_n > 1 && out_baseimg) {
error("-B makes no sense when concatenating multiple input images");
- return 1;
+ ret = -1;
+ goto out;
}
bs = qemu_mallocz(bs_n * sizeof(BlockDriverState *));
@@ -974,12 +975,14 @@ out:
if (out_bs) {
bdrv_delete(out_bs);
}
- for (bs_i = 0; bs_i < bs_n; bs_i++) {
- if (bs[bs_i]) {
- bdrv_delete(bs[bs_i]);
+ if (bs) {
+ for (bs_i = 0; bs_i < bs_n; bs_i++) {
+ if (bs[bs_i]) {
+ bdrv_delete(bs[bs_i]);
+ }
}
+ qemu_free(bs);
}
- qemu_free(bs);
if (ret) {
return 1;
}