mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-06 17:23:56 -06:00
qcow2: Unaligned zero cluster in handle_alloc()
We should check whether the cluster offset we are about to use is actually valid; that is, whether it is aligned to cluster boundaries. Reported-by: R. Nageswara Sastry <nasastry@in.ibm.com> Buglink: https://bugs.launchpad.net/qemu/+bug/1728643 Buglink: https://bugs.launchpad.net/qemu/+bug/1728657 Signed-off-by: Max Reitz <mreitz@redhat.com> Message-id: 20171110203111.7666-3-mreitz@redhat.com Reviewed-by: Eric Blake <eblake@redhat.com> Reviewed-by: Alberto Garcia <berto@igalia.com> Signed-off-by: Max Reitz <mreitz@redhat.com>
This commit is contained in:
parent
791fff504c
commit
93bbaf03ff
3 changed files with 38 additions and 1 deletions
|
@ -321,6 +321,22 @@ echo '--- Repairing ---'
|
|||
# because the image was already marked corrupt by that point
|
||||
_check_test_img -r all
|
||||
|
||||
echo
|
||||
echo "=== Writing to an unaligned preallocated zero cluster ==="
|
||||
echo
|
||||
|
||||
_make_test_img 64M
|
||||
|
||||
# Allocate the L2 table
|
||||
$QEMU_IO -c "write 0 64k" -c "discard 0 64k" "$TEST_IMG" | _filter_qemu_io
|
||||
# Pretend there is a preallocated zero cluster somewhere inside the
|
||||
# image header
|
||||
poke_file "$TEST_IMG" "$l2_offset" "\x80\x00\x00\x00\x00\x00\x2a\x01"
|
||||
# Let's write to it!
|
||||
$QEMU_IO -c "write 0 64k" "$TEST_IMG" | _filter_qemu_io
|
||||
|
||||
# Can't repair this yet (TODO: We can just deallocate the cluster)
|
||||
|
||||
# success, all done
|
||||
echo "*** done"
|
||||
rm -f $seq.full
|
||||
|
|
|
@ -307,4 +307,14 @@ The following inconsistencies were found and repaired:
|
|||
|
||||
Double checking the fixed image now...
|
||||
No errors were found on the image.
|
||||
|
||||
=== Writing to an unaligned preallocated zero cluster ===
|
||||
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
|
||||
wrote 65536/65536 bytes at offset 0
|
||||
64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
discard 65536/65536 bytes at offset 0
|
||||
64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
qcow2: Marking image as corrupt: Preallocated zero cluster offset 0x2a00 unaligned (guest offset: 0); further corruption events will be suppressed
|
||||
write failed: Input/output error
|
||||
*** done
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue