mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-07 17:53:56 -06:00
qcow2: Check snapshot L1 table in qcow2_snapshot_delete()
This function deletes a snapshot from disk, removing its entry from the snapshot table, freeing its L1 table and decreasing the refcounts of all clusters. The L1 table offset and size are however not validated. If we use invalid values in this function we'll probably corrupt the image even more, so we should return an error instead. We now have a function to take care of this, so let's use it. Signed-off-by: Alberto Garcia <berto@igalia.com> Reviewed-by: Eric Blake <eblake@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
parent
a8475d7573
commit
db5794f1f1
3 changed files with 11 additions and 0 deletions
|
@ -181,6 +181,7 @@ poke_file "$TEST_IMG" "$offset_snap1_l1_offset" "\x00\x00\x00\x00\x00\x40\x02\x0
|
|||
{ $QEMU_IO -c "open -o overlap-check.inactive-l2=on $TEST_IMG" \
|
||||
-c 'write 0 4k'; } 2>&1 | _filter_qemu_io | _filter_testdir
|
||||
{ $QEMU_IMG snapshot -a test $TEST_IMG; } 2>&1 | _filter_testdir
|
||||
{ $QEMU_IMG snapshot -d test $TEST_IMG; } 2>&1 | _filter_testdir
|
||||
|
||||
echo
|
||||
echo "== Invalid snapshot L1 table size =="
|
||||
|
@ -193,6 +194,7 @@ poke_file "$TEST_IMG" "$offset_snap1_l1_size" "\x10\x00\x00\x00"
|
|||
{ $QEMU_IO -c "open -o overlap-check.inactive-l2=on $TEST_IMG" \
|
||||
-c 'write 0 4k'; } 2>&1 | _filter_qemu_io | _filter_testdir
|
||||
{ $QEMU_IMG snapshot -a test $TEST_IMG; } 2>&1 | _filter_testdir
|
||||
{ $QEMU_IMG snapshot -d test $TEST_IMG; } 2>&1 | _filter_testdir
|
||||
|
||||
# success, all done
|
||||
echo "*** done"
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue