mirror of
https://github.com/xemu-project/xemu.git
synced 2024-12-23 20:35:24 +00:00
da15ee5134
Insanely large requests could cause an integer overflow in bdrv_rw_co() while converting sectors to bytes. This patch catches the problem and returns an error (if we hadn't overflown the integer here, bdrv_check_byte_request() would have rejected the request, so we're not breaking anything that was supposed to work before). We actually do have a test case that triggers behaviour where we accidentally let such a request pass, so that it would return success, but read 0 bytes instead of the requested 4 GB. It fails now like it should. If the vdi block driver wants to be able to deal with huge images, it can't read the whole block bitmap at once into memory like it does today, but needs to use a metadata cache like qcow2 does. Signed-off-by: Kevin Wolf <kwolf@redhat.com>
31 lines
1.3 KiB
Plaintext
31 lines
1.3 KiB
Plaintext
QA output created by 084
|
|
|
|
=== Testing image size bounds ===
|
|
|
|
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
|
|
Test 1: Maximum size (1024 TB):
|
|
qemu-img: Could not open 'TEST_DIR/t.IMGFMT': Could not open 'TEST_DIR/t.IMGFMT': Invalid argument
|
|
|
|
Test 2: Size too large (1024TB + 1)
|
|
qemu-img: Could not open 'TEST_DIR/t.IMGFMT': Unsupported VDI image size (size is 0x3fffffff10000, max supported is 0x3fffffff00000)
|
|
|
|
Test 3: Size valid (64M), but Blocks In Image too small (63)
|
|
qemu-img: Could not open 'TEST_DIR/t.IMGFMT': unsupported VDI image (disk size 67108864, image bitmap has room for 66060288)
|
|
|
|
Test 4: Size valid (64M), but Blocks In Image exceeds max allowed
|
|
qemu-img: Could not open 'TEST_DIR/t.IMGFMT': unsupported VDI image (too many blocks 1073741824, max is 1073741823)
|
|
|
|
Test 5: Valid Image: 64MB, Blocks In Image 64, Block Size 1MB
|
|
image: TEST_DIR/t.IMGFMT
|
|
file format: IMGFMT
|
|
virtual size: 64M (67108864 bytes)
|
|
cluster_size: 1048576
|
|
|
|
Test 6: Block Size != 1MB; too small test (1MB - 1)
|
|
qemu-img: Could not open 'TEST_DIR/t.IMGFMT': unsupported VDI image (block size 1048575 is not 1048576)
|
|
|
|
Test 7: Block Size != 1MB; too large test (1MB + 64KB)
|
|
qemu-img: Could not open 'TEST_DIR/t.IMGFMT': unsupported VDI image (block size 1114112 is not 1048576)
|
|
|
|
*** done
|