qemu/tests/qemu-iotests/301
Eric Blake 497a30dbb0 qemu-img: Require -F with -b backing image
Back in commit d9f059aa6c (qemu-img: Deprecate use of -b without -F),
we deprecated the ability to create a file with a backing image that
requires qemu to perform format probing.  Qemu can still probe older
files for backwards compatibility, but it is time to finish off the
ability to create such images, due to the potential security risk they
present.  Update a couple of iotests affected by the change.

Signed-off-by: Eric Blake <eblake@redhat.com>
Message-Id: <20210503213600.569128-3-eblake@redhat.com>
Reviewed-by: Connor Kuehl <ckuehl@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
2021-07-09 13:18:32 +02:00

88 lines
2.3 KiB
Bash
Executable File

#!/usr/bin/env bash
# group: backing quick
#
# Test qcow backing file warnings
#
# Copyright (C) 2020-2021 Red Hat, Inc.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
seq=`basename $0`
echo "QA output created by $seq"
status=1 # failure is the default!
_cleanup()
{
_cleanup_test_img
_rm_test_img "$TEST_IMG.qcow2"
}
trap "_cleanup; exit \$status" 0 1 2 3 15
# get standard environment, filters and checks
. ./common.rc
. ./common.filter
_supported_fmt qcow
_supported_proto file
_supported_os Linux
size=32M
echo
echo "== qcow backed by qcow =="
TEST_IMG="$TEST_IMG.base" _make_test_img $size
_make_test_img -b "$TEST_IMG.base" $size
_make_test_img -b "$TEST_IMG.base" -F $IMGFMT $size
_img_info
echo
echo "== mismatched command line detection =="
_make_test_img -b "$TEST_IMG.base" -F vmdk
_make_test_img -b "$TEST_IMG.base" -F vmdk $size
echo
# Use of -u bypasses the backing format sanity check
_make_test_img -u -b "$TEST_IMG.base" -F vmdk
_make_test_img -u -b "$TEST_IMG.base" -F vmdk $size
echo
# But the format must still be recognized
_make_test_img -b "$TEST_IMG.base" -F garbage $size
_make_test_img -u -b "$TEST_IMG.base" -F garbage $size
_img_info
echo
echo "== qcow backed by raw =="
rm "$TEST_IMG.base"
truncate --size=$size "$TEST_IMG.base"
_make_test_img -b "$TEST_IMG.base" $size
_make_test_img -b "$TEST_IMG.base" -F raw $size
_img_info
echo
echo "== commit cannot change type of raw backing file =="
TEST_IMG="$TEST_IMG.qcow2" IMGFMT=qcow2 _make_test_img $size
truncate --size=$size "$TEST_IMG.qcow2"
$QEMU_IMG convert -n -f raw -O $IMGFMT "$TEST_IMG.qcow2" "$TEST_IMG"
$QEMU_IMG commit -f $IMGFMT "$TEST_IMG" && echo "unexpected success"
TEST_IMG="$TEST_IMG.base" _img_info
# success, all done
echo "*** done"
rm -f $seq.full
status=0