Commit 50880f25 authored by Kevin Wolf's avatar Kevin Wolf
Browse files

qemu-iotests: Test invalid resize on luks



This tests that the .bdrv_truncate implementation for luks doesn't crash
for invalid image sizes.

Signed-off-by: default avatarKevin Wolf <kwolf@redhat.com>
Reviewed-by: default avatarEric Blake <eblake@redhat.com>
parent 120bc742
Loading
Loading
Loading
Loading
+37 −0
Original line number Diff line number Diff line
@@ -204,6 +204,43 @@ run_qemu -blockdev driver=file,filename="$TEST_IMG_FILE",node-name=node0 \
{ "execute": "quit" }
EOF

echo
echo "=== Resize image with invalid sizes ==="
echo

run_qemu -blockdev driver=file,filename="$TEST_IMG_FILE",node-name=node0 \
         -blockdev driver=luks,file=node0,key-secret=keysec0,node-name=node1 \
         -object secret,id=keysec0,data="foo" <<EOF
{ "execute": "qmp_capabilities" }
{ "execute": "block_resize",
  "arguments": {
      "node-name": "node1",
      "size": 9223372036854775296
  }
}
{ "execute": "block_resize",
  "arguments": {
      "node-name": "node1",
      "size": 9223372036854775808
  }
}
{ "execute": "block_resize",
  "arguments": {
      "node-name": "node1",
      "size": 18446744073709551104
  }
}
{ "execute": "block_resize",
  "arguments": {
      "node-name": "node1",
      "size": -9223372036854775808
  }
}
{ "execute": "quit" }
EOF

_img_info | _filter_img_info

# success, all done
echo "*** done"
rm -f $seq.full
+16 −0
Original line number Diff line number Diff line
@@ -133,4 +133,20 @@ QMP_VERSION
{"return": {}}
{"timestamp": {"seconds":  TIMESTAMP, "microseconds":  TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false}}


=== Resize image with invalid sizes ===

Testing: -blockdev driver=file,filename=TEST_DIR/t.IMGFMT,node-name=node0 -blockdev driver=IMGFMT,file=node0,key-secret=keysec0,node-name=node1 -object secret,id=keysec0,data=foo
QMP_VERSION
{"return": {}}
{"error": {"class": "GenericError", "desc": "The requested file size is too large"}}
{"error": {"class": "GenericError", "desc": "Invalid parameter type for 'size', expected: integer"}}
{"error": {"class": "GenericError", "desc": "Invalid parameter type for 'size', expected: integer"}}
{"error": {"class": "GenericError", "desc": "Parameter 'size' expects a >0 size"}}
{"return": {}}
{"timestamp": {"seconds":  TIMESTAMP, "microseconds":  TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false}}

image: json:{"driver": "IMGFMT", "file": {"driver": "file", "filename": "TEST_DIR/t.IMGFMT"}, "key-secret": "keysec0"}
file format: IMGFMT
virtual size: 0 (0 bytes)
*** done