]> git.proxmox.com Git - mirror_qemu.git/commitdiff
parallels: Check maximum cluster size on create
authorKevin Wolf <kwolf@redhat.com>
Tue, 20 Mar 2018 16:07:58 +0000 (17:07 +0100)
committerKevin Wolf <kwolf@redhat.com>
Mon, 26 Mar 2018 10:17:43 +0000 (12:17 +0200)
It's unclear what the real maximum cluster size is for the Parallels
format, but let's at least make sure that we don't get integer
overflows in our .bdrv_co_create implementation.

Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
block/parallels.c

index e2515dec812cccf9ec792b3f01b91815f6e5fd70..799215e079fe982d0e2fa59f47001594de796237 100644 (file)
@@ -526,6 +526,11 @@ static int coroutine_fn parallels_co_create(BlockdevCreateOptions* opts,
         cl_size = DEFAULT_CLUSTER_SIZE;
     }
 
+    /* XXX What is the real limit here? This is an insanely large maximum. */
+    if (cl_size >= INT64_MAX / MAX_PARALLELS_IMAGE_FACTOR) {
+        error_setg(errp, "Cluster size is too large");
+        return -EINVAL;
+    }
     if (total_size >= MAX_PARALLELS_IMAGE_FACTOR * cl_size) {
         error_setg(errp, "Image size is too large for this cluster size");
         return -E2BIG;