]> git.ipfire.org Git - thirdparty/qemu.git/commitdiff
vhdx: Check for 4 GB maximum log size on creation
authorKevin Wolf <kwolf@redhat.com>
Tue, 20 Mar 2018 17:24:54 +0000 (18:24 +0100)
committerKevin Wolf <kwolf@redhat.com>
Mon, 26 Mar 2018 10:17:43 +0000 (12:17 +0200)
It's unclear what the real maximum is, but we use an uint32_t to store
the log size in vhdx_co_create(), so we should check that the given
value fits in 32 bits.

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

index 4a087d870878a1fa0cddda723cd6785f975422ad..6ac0424f61aff8d04506d5ea6e411f39c3528fa2 100644 (file)
@@ -1829,6 +1829,10 @@ static int coroutine_fn vhdx_co_create(BlockdevCreateOptions *opts,
     if (!vhdx_opts->has_log_size) {
         log_size = DEFAULT_LOG_SIZE;
     } else {
+        if (vhdx_opts->log_size > UINT32_MAX) {
+            error_setg(errp, "Log size must be smaller than 4 GB");
+            return -EINVAL;
+        }
         log_size = vhdx_opts->log_size;
     }
     if (log_size < MiB || (log_size % MiB) != 0) {