qemu/block
Kevin Wolf b03dd9613b qcow2: Fix theoretical corruption in store_bitmap() error path
In order to write the bitmap table to the image file, it is converted to
big endian. If the write fails, it is passed to clear_bitmap_table() to
free all of the clusters it had allocated before. However, if we don't
convert it back to native endianness first, we'll free things at a wrong
offset.

In practical terms, the offsets will be so high that we won't actually
free any allocated clusters, but just run into an error, but in theory
this can cause image corruption.

Cc: qemu-stable@nongnu.org
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Message-Id: <20230112191454.169353-2-kwolf@redhat.com>
Reviewed-by: Hanna Czenczek <hreitz@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
2023-01-24 18:26:41 +01:00
..
export include/block: Untangle inclusion loops 2023-01-20 07:24:28 +01:00
monitor include/block: Untangle inclusion loops 2023-01-20 07:24:28 +01:00
accounting.c block: add missed block_acct_setup with new block device init procedure 2022-09-30 18:42:34 +02:00
aio_task.c block/aio_task: assert max_busy_tasks is greater than 0 2021-10-05 18:56:41 +02:00
amend.c include/block: Untangle inclusion loops 2023-01-20 07:24:28 +01:00
backup.c include/block: Untangle inclusion loops 2023-01-20 07:24:28 +01:00
blkdebug.c include/block: Untangle inclusion loops 2023-01-20 07:24:28 +01:00
blkio.c block/blkio: Fix inclusion of required headers 2023-01-23 15:02:07 -05:00
blklogwrites.c include/block: Untangle inclusion loops 2023-01-20 07:24:28 +01:00
blkreplay.c include/block: Untangle inclusion loops 2023-01-20 07:24:28 +01:00
blkverify.c include/block: Untangle inclusion loops 2023-01-20 07:24:28 +01:00
block-backend.c block: remove bdrv_coroutine_enter 2023-01-24 18:26:41 +01:00
block-copy.c include/block: Untangle inclusion loops 2023-01-20 07:24:28 +01:00
block-gen.h block-coroutine-wrapper.py: support also basic return types 2022-12-15 16:07:43 +01:00
block-ram-registrar.c block: add BlockRAMRegistrar 2022-10-26 14:56:42 -04:00
bochs.c include/block: Untangle inclusion loops 2023-01-20 07:24:28 +01:00
cloop.c include/block: Untangle inclusion loops 2023-01-20 07:24:28 +01:00
commit.c block-backend: replace bdrv_*_above with blk_*_above 2022-12-15 16:07:43 +01:00
copy-before-write.c include/block: Untangle inclusion loops 2023-01-20 07:24:28 +01:00
copy-before-write.h block/copy-before-write.h: global state API + assertions 2022-03-04 18:18:25 +01:00
copy-on-read.c include/block: Untangle inclusion loops 2023-01-20 07:24:28 +01:00
copy-on-read.h Clean up ill-advised or unusual header guards 2022-05-11 16:50:01 +02:00
coroutines.h block: GRAPH_RDLOCK for functions only called by co_wrappers 2022-12-15 16:08:23 +01:00
create.c block_int-common.h: assertions in the callers of BlockDriver function pointers 2022-03-04 18:18:25 +01:00
crypto.c block: bdrv_create_file is a coroutine_fn 2022-12-15 16:07:43 +01:00
crypto.h nomaintainer: Fix Lesser GPL version number 2020-11-15 17:04:40 +01:00
curl.c include/block: Untangle inclusion loops 2023-01-20 07:24:28 +01:00
dirty-bitmap.c include/block: Untangle inclusion loops 2023-01-20 07:24:28 +01:00
dmg-bz2.c Include qemu-common.h exactly where needed 2019-06-12 13:20:20 +02:00
dmg-lzfse.c block: Remove unused include 2020-11-09 15:44:21 +01:00
dmg.c include/block: Untangle inclusion loops 2023-01-20 07:24:28 +01:00
dmg.h Include qemu-common.h exactly where needed 2019-06-12 13:20:20 +02:00
file-posix.c include/block: Untangle inclusion loops 2023-01-20 07:24:28 +01:00
file-win32.c include/block: Untangle inclusion loops 2023-01-20 07:24:28 +01:00
filter-compress.c include/block: Untangle inclusion loops 2023-01-20 07:24:28 +01:00
gluster.c include/block: Untangle inclusion loops 2023-01-20 07:24:28 +01:00
graph-lock.c graph-lock: TSA annotations for lock/unlock functions 2022-12-15 16:08:23 +01:00
io_uring.c block/io_uring: revert "Use io_uring_register_ring_fd() to skip fd operations" 2022-10-27 20:14:11 +02:00
io.c include/block: Untangle inclusion loops 2023-01-20 07:24:28 +01:00
iscsi-opts.c modules: add block module annotations 2021-07-09 18:20:27 +02:00
iscsi.c include/block: Untangle inclusion loops 2023-01-20 07:24:28 +01:00
linux-aio.c misc: fix commonly doubled up words 2022-08-01 11:58:02 +02:00
meson.build graph-lock: Introduce a lock to protect block graph operations 2022-12-15 16:07:43 +01:00
mirror.c include/block: Untangle inclusion loops 2023-01-20 07:24:28 +01:00
nbd.c block: add BDRV_REQ_REGISTERED_BUF request flag 2022-10-26 14:56:42 -04:00
nfs.c include/block: Untangle inclusion loops 2023-01-20 07:24:28 +01:00
null.c include/block: Untangle inclusion loops 2023-01-20 07:24:28 +01:00
nvme.c include/block: Untangle inclusion loops 2023-01-20 07:24:28 +01:00
parallels-ext.c include/block: Untangle inclusion loops 2023-01-20 07:24:28 +01:00
parallels.c block: bdrv_create_file is a coroutine_fn 2022-12-15 16:07:43 +01:00
parallels.h parallels: support bitmap extension for read-only mode 2021-03-08 14:56:55 +01:00
preallocate.c include/block: Untangle inclusion loops 2023-01-20 07:24:28 +01:00
progress_meter.c coroutine: Clean up superfluous inclusion of qemu/lockable.h 2023-01-19 10:18:28 +01:00
qapi-sysemu.c include/block: Untangle inclusion loops 2023-01-20 07:24:28 +01:00
qapi.c include/block: Untangle inclusion loops 2023-01-20 07:24:28 +01:00
qcow2-bitmap.c qcow2: Fix theoretical corruption in store_bitmap() error path 2023-01-24 18:26:41 +01:00
qcow2-cache.c include/block: Untangle inclusion loops 2023-01-20 07:24:28 +01:00
qcow2-cluster.c include/block: Untangle inclusion loops 2023-01-20 07:24:28 +01:00
qcow2-refcount.c include/block: Untangle inclusion loops 2023-01-20 07:24:28 +01:00
qcow2-snapshot.c qcow2: switch to *_co_* functions 2022-10-27 20:14:11 +02:00
qcow2-threads.c include/block: Untangle inclusion loops 2023-01-20 07:24:28 +01:00
qcow2.c include/block: Untangle inclusion loops 2023-01-20 07:24:28 +01:00
qcow2.h qcow2: manually add more coroutine_fn annotations 2022-10-27 20:14:11 +02:00
qcow.c block: bdrv_create_file is a coroutine_fn 2022-12-15 16:07:43 +01:00
qed-check.c include/block: Untangle inclusion loops 2023-01-20 07:24:28 +01:00
qed-cluster.c
qed-l2-cache.c osdep: Move memalign-related functions to their own header 2022-03-07 13:16:49 +00:00
qed-table.c include/block: Untangle inclusion loops 2023-01-20 07:24:28 +01:00
qed.c block: bdrv_create_file is a coroutine_fn 2022-12-15 16:07:43 +01:00
qed.h qed: Simplify backing reads 2020-07-06 10:34:14 +02:00
quorum.c qapi block: Elide redundant has_FOO in generated C 2022-12-14 20:03:25 +01:00
raw-format.c include/block: Untangle inclusion loops 2023-01-20 07:24:28 +01:00
rbd.c include/block: Untangle inclusion loops 2023-01-20 07:24:28 +01:00
replication.c block: Drain individual nodes during reopen 2022-12-15 16:07:42 +01:00
reqlist.c block/reqlist: add reqlist_wait_all() 2022-03-07 09:33:30 +01:00
snapshot-access.c block: Manipulate bs->file / bs->backing pointers in .attach/.detach 2022-10-27 20:14:11 +02:00
snapshot.c block/snapshot: drop indirection around bdrv_snapshot_fallback_ptr 2022-10-27 20:14:11 +02:00
ssh.c include/block: Untangle inclusion loops 2023-01-20 07:24:28 +01:00
stream.c stream: Replace subtree drain with a single node drain 2022-12-15 16:07:42 +01:00
throttle-groups.c block/throttle-groups: throttle_group_co_io_limits_intercept(): 64bit bytes 2021-02-03 08:14:00 -06:00
throttle.c include/block: Untangle inclusion loops 2023-01-20 07:24:28 +01:00
trace-events nbd: trace long NBD operations 2022-06-29 10:57:02 +03:00
trace.h trace: switch position of headers to what Meson requires 2020-08-21 06:18:24 -04:00
vdi.c block: bdrv_create_file is a coroutine_fn 2022-12-15 16:07:43 +01:00
vhdx-endian.c Include qemu-common.h exactly where needed 2019-06-12 13:20:20 +02:00
vhdx-log.c include/block: Untangle inclusion loops 2023-01-20 07:24:28 +01:00
vhdx.c block: bdrv_create_file is a coroutine_fn 2022-12-15 16:07:43 +01:00
vhdx.h block/vhdx: Use IEC binary prefixes for size constants 2019-04-30 15:29:00 +02:00
vmdk.c block: bdrv_create_file is a coroutine_fn 2022-12-15 16:07:43 +01:00
vpc.c block: bdrv_create_file is a coroutine_fn 2022-12-15 16:07:43 +01:00
vvfat.c include/block: Untangle inclusion loops 2023-01-20 07:24:28 +01:00
win32-aio.c include/block: Untangle inclusion loops 2023-01-20 07:24:28 +01:00
write-threshold.c include/block: Untangle inclusion loops 2023-01-20 07:24:28 +01:00