Prechádzať zdrojové kódy

qemu-img: Fix segmentation fault

The following command generates a segmentation fault.
qemu-img convert -O vpc -o ? test test2
This is because the 'goto out;' statement calls qemu_progress_end
before qemu_progress_init is called resulting in a NULL pointer
invocation.

Signed-off-by: Charles Arnold <carnold@suse.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Charles Arnold 13 rokov pred
rodič
commit
fa170c148b
1 zmenil súbory, kde vykonal 3 pridanie a 1 odobranie
  1. 3 1
      qemu-img.c

+ 3 - 1
qemu-img.c

@@ -712,6 +712,9 @@ static int img_convert(int argc, char **argv)
 
 
     out_filename = argv[argc - 1];
     out_filename = argv[argc - 1];
 
 
+    /* Initialize before goto out */
+    qemu_progress_init(progress, 2.0);
+
     if (options && !strcmp(options, "?")) {
     if (options && !strcmp(options, "?")) {
         ret = print_block_option_help(out_filename, out_fmt);
         ret = print_block_option_help(out_filename, out_fmt);
         goto out;
         goto out;
@@ -724,7 +727,6 @@ static int img_convert(int argc, char **argv)
         goto out;
         goto out;
     }
     }
 
 
-    qemu_progress_init(progress, 2.0);
     qemu_progress_print(0, 100);
     qemu_progress_print(0, 100);
 
 
     bs = g_malloc0(bs_n * sizeof(BlockDriverState *));
     bs = g_malloc0(bs_n * sizeof(BlockDriverState *));