]> Git Repo - qemu.git/commitdiff
block: fix off-by-one error in qcow and qcow2
authorJeff Cody <[email protected]>
Tue, 27 Jan 2015 13:33:55 +0000 (08:33 -0500)
committerKevin Wolf <[email protected]>
Fri, 6 Feb 2015 16:24:21 +0000 (17:24 +0100)
This fixes an off-by-one error introduced in 9a29e18.  Both qcow and
qcow2 need to make sure to leave room for string terminator '\0' for
the backing file, so the max length of the non-terminated string is
either 1023 or PATH_MAX - 1.

Reported-by: Kevin Wolf <[email protected]>
Signed-off-by: Jeff Cody <[email protected]>
Signed-off-by: Kevin Wolf <[email protected]>
block/qcow.c
block/qcow2.c

index ccbe9e0d2c14fc531695d914e5f562fb87da987e..055896910eab9c6946ff66f4265f594e5218f47c 100644 (file)
@@ -215,7 +215,7 @@ static int qcow_open(BlockDriverState *bs, QDict *options, int flags,
     /* read the backing file name */
     if (header.backing_file_offset != 0) {
         len = header.backing_file_size;
-        if (len > 1023 || len > sizeof(bs->backing_file)) {
+        if (len > 1023 || len >= sizeof(bs->backing_file)) {
             error_setg(errp, "Backing file name too long");
             ret = -EINVAL;
             goto fail;
index dbaf016bc706c9c3e67384331136e0ad94497a8a..7e614d76a430ba0fffaaccc7e311562d2312c09b 100644 (file)
@@ -869,7 +869,7 @@ static int qcow2_open(BlockDriverState *bs, QDict *options, int flags,
     if (header.backing_file_offset != 0) {
         len = header.backing_file_size;
         if (len > MIN(1023, s->cluster_size - header.backing_file_offset) ||
-            len > sizeof(bs->backing_file)) {
+            len >= sizeof(bs->backing_file)) {
             error_setg(errp, "Backing file name too long");
             ret = -EINVAL;
             goto fail;
This page took 0.0320009999999999 seconds and 4 git commands to generate.