[libvirt] [PATCH 1/3] qemu: block: Use correct type when creating image size JSON entries

Peter Krempa pkrempa at redhat.com
Fri Aug 30 14:45:03 UTC 2019


The 'u' modifier creates a unsigned int JSON attribute but the disk size
and capacity fields are unsigned long long. If the size of the created
image would be more than 4GiB we'd overflow and create sub-4G image.

Signed-off-by: Peter Krempa <pkrempa at redhat.com>
---
 src/qemu/qemu_block.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/src/qemu/qemu_block.c b/src/qemu/qemu_block.c
index 66b1d116d8..e33aad4458 100644
--- a/src/qemu/qemu_block.c
+++ b/src/qemu/qemu_block.c
@@ -2034,7 +2034,7 @@ qemuBlockStorageSourceCreateGetFormatPropsGeneric(virStorageSourcePtr src,
     if (virJSONValueObjectCreate(&props,
                                  "s:driver", driver,
                                  "s:file", src->nodestorage,
-                                 "u:size", src->capacity,
+                                 "U:size", src->capacity,
                                  NULL) < 0)
         return -1;

@@ -2100,7 +2100,7 @@ qemuBlockStorageSourceCreateGetFormatPropsLUKS(virStorageSourcePtr src,
     if (virJSONValueObjectAdd(luksprops,
                               "s:driver", "luks",
                               "s:file", src->nodestorage,
-                              "u:size", src->capacity,
+                              "U:size", src->capacity,
                               NULL) < 0)
         return -1;

@@ -2153,7 +2153,7 @@ qemuBlockStorageSourceCreateGetFormatPropsQcow2(virStorageSourcePtr src,
     if (virJSONValueObjectCreate(&qcow2props,
                                  "s:driver", "qcow2",
                                  "s:file", src->nodestorage,
-                                 "u:size", src->capacity,
+                                 "U:size", src->capacity,
                                  "S:version", qcow2version,
                                  NULL) < 0)
         return -1;
@@ -2177,7 +2177,7 @@ qemuBlockStorageSourceCreateGetFormatPropsQcow(virStorageSourcePtr src,
     if (virJSONValueObjectCreate(&qcowprops,
                                  "s:driver", "qcow",
                                  "s:file", src->nodestorage,
-                                 "u:size", src->capacity,
+                                 "U:size", src->capacity,
                                  NULL) < 0)
         return -1;

@@ -2200,7 +2200,7 @@ qemuBlockStorageSourceCreateGetFormatPropsQed(virStorageSourcePtr src,
     if (virJSONValueObjectCreate(&qedprops,
                                  "s:driver", "qed",
                                  "s:file", src->nodestorage,
-                                 "u:size", src->capacity,
+                                 "U:size", src->capacity,
                                  NULL) < 0)
         return -1;

@@ -2373,7 +2373,7 @@ qemuBlockStorageSourceCreateGetStorageProps(virStorageSourcePtr src,
                                  "s:driver", driver,
                                  "S:filename", filename,
                                  "A:location", &location,
-                                 "u:size", src->physical,
+                                 "U:size", src->physical,
                                  NULL) < 0)
         return -1;

-- 
2.21.0




More information about the libvir-list mailing list