From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:38364) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eC6yp-0007mI-SI for qemu-devel@nongnu.org; Tue, 07 Nov 2017 11:44:07 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eC6yk-0001r4-U6 for qemu-devel@nongnu.org; Tue, 07 Nov 2017 11:44:03 -0500 Date: Tue, 7 Nov 2017 17:43:49 +0100 From: Kevin Wolf Message-ID: <20171107164349.GE4706@localhost.localdomain> References: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: Subject: Re: [Qemu-devel] [Qemu-block] [PATCH v2 4/7] qcow2: Don't open images with header.refcount_table_clusters == 0 List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Alberto Garcia Cc: Thomas Huth , qemu-block@nongnu.org, qemu-devel@nongnu.org, Max Reitz , "R . Nageswara Sastry" Am 03.11.2017 um 15:18 hat Alberto Garcia geschrieben: > qcow2_do_open() is checking that header.refcount_table_clusters is not > too large, but it doesn't check that it's greater than zero. Apart > from the fact that an image like that is obviously corrupted, trying > to use it crashes QEMU since we end up with a null s->refcount_table > after qcow2_refcount_init(). > > These images can however be repaired, so allow opening them if the > BDRV_O_CHECK flag is set. > > Signed-off-by: Alberto Garcia > Reviewed-by: Max Reitz > --- a/tests/qemu-iotests/060 > +++ b/tests/qemu-iotests/060 > @@ -270,6 +270,13 @@ poke_file "$TEST_IMG" "$rb_offset" "\x00\x00\x00\x00\x00\x00\x00\x00" > # write will try to allocate a compressed data cluster at offset 0. > $QEMU_IO -c "write -c 0k 64k" "$TEST_IMG" | _filter_qemu_io > > +echo > +echo "=== Testing zero refcount table size ===" > +echo > +_make_test_img 64M > +poke_file "$TEST_IMG" "56" "\x00\x00\x00\x00" > +$QEMU_IO -c "write 0 64k" "$TEST_IMG" 2>&1 | _filter_testdir | _filter_imgfmt In the commit message, you claim that the image can be repaired. Would it be worth actually testing the repair here? Kevin