aboutsummaryrefslogtreecommitdiff
path: root/tests/qemu-iotests/059
diff options
context:
space:
mode:
authorFam Zheng <famz@redhat.com>2013-08-06 15:44:53 +0800
committerKevin Wolf <kwolf@redhat.com>2013-08-06 15:27:32 +0200
commit2c43e43c8cec130fff95ef720a860e91efb36685 (patch)
tree03cce2301a24e14038d02ec8685e7eecb051dcfe /tests/qemu-iotests/059
parentf8ce04036e333aae480b1d06d969f6436652633d (diff)
vmdk: check l1 size before opening image
L1 table size is calculated from capacity, granularity and l2 table size. If capacity is too big or later two are too small, the L1 table will be too big to allocate in memory. Limit it to a reasonable range. Signed-off-by: Fam Zheng <famz@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Diffstat (limited to 'tests/qemu-iotests/059')
-rwxr-xr-xtests/qemu-iotests/0598
1 files changed, 8 insertions, 0 deletions
diff --git a/tests/qemu-iotests/059 b/tests/qemu-iotests/059
index 301eacaf7e..b03429dd01 100755
--- a/tests/qemu-iotests/059
+++ b/tests/qemu-iotests/059
@@ -43,6 +43,7 @@ _supported_fmt vmdk
_supported_proto generic
_supported_os Linux
+capacity_offset=16
granularity_offset=20
grain_table_size_offset=44
@@ -58,6 +59,13 @@ _make_test_img 64M
poke_file "$TEST_IMG" "$grain_table_size_offset" "\xff\xff\xff\xff"
{ $QEMU_IO -c "read 0 512" $TEST_IMG; } 2>&1 | _filter_qemu_io | _filter_testdir
+echo "=== Testing too big L1 table size ==="
+echo
+_make_test_img 64M
+poke_file "$TEST_IMG" "$capacity_offset" "\xff\xff\xff\xff"
+poke_file "$TEST_IMG" "$grain_table_size_offset" "\x01\x00\x00\x00"
+{ $QEMU_IO -c "read 0 512" $TEST_IMG; } 2>&1 | _filter_qemu_io | _filter_testdir
+
# success, all done
echo "*** done"
rm -f $seq.full