From nobody Wed Nov 5 05:08:43 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1532918963132858.7637614484206; Sun, 29 Jul 2018 19:49:23 -0700 (PDT) Received: from localhost ([::1]:50309 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fjyFI-0005f6-Jw for importer@patchew.org; Sun, 29 Jul 2018 22:49:16 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:47527) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fjyDr-0004J8-Fb for qemu-devel@nongnu.org; Sun, 29 Jul 2018 22:47:48 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fjyDq-0001f0-IV for qemu-devel@nongnu.org; Sun, 29 Jul 2018 22:47:47 -0400 Received: from synology.com ([59.124.61.242]:41368) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1fjyDk-0001b0-O4; Sun, 29 Jul 2018 22:47:41 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=synology.com; s=123; t=1532918858; bh=cTvzsYUoUeWixvitfOuMdQLqkgScJB4FqEYXzH20R84=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=jRitJhY6ixxOLK1UkvZOjAIV6BON6Yc8hZeu9mGakn9KUvKIxXRCinTW2xEWGsdQ2 mWubpirNyGuaUrA2wULU1L6vu6xqPCYvf+BoFqbZrSpI53dVwG9syy27+PsJgh6t9w Pkjr+gWK/fecfzes+XoJz5mO91aw1EoGWH6xjc5M= To: qemu-devel@nongnu.org Date: Mon, 30 Jul 2018 10:47:01 +0800 Message-Id: <20180730024701.7613-3-yuchenlin@synology.com> In-Reply-To: <20180730024701.7613-1-yuchenlin@synology.com> References: <20180730024701.7613-1-yuchenlin@synology.com> X-Synology-MCP-Status: no X-Synology-Spam-Flag: no X-Synology-Spam-Status: score=0, required 5, WHITELIST_FROM_ADDRESS 0 X-Synology-Virus-Status: no X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 59.124.61.242 Subject: [Qemu-devel] [PATCH 2/2] vdi: refine code for vdi_open X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , From: yuchenlin--- via Qemu-devel Reply-To: yuchenlin@synology.com Cc: sw@weilnetz.de, yuchenlin , qemu-block@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: yuchenlin When the condition of each if or else if is true, the code flow will goto fail. Which means we can decouple if else if chain to get some readability. Signed-off-by: yuchenlin --- block/vdi.c | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/block/vdi.c b/block/vdi.c index 12f92e7891..28fc6210a7 100644 --- a/block/vdi.c +++ b/block/vdi.c @@ -405,35 +405,41 @@ static int vdi_open(BlockDriverState *bs, QDict *opti= ons, int flags, ")", header.signature); ret =3D -EINVAL; goto fail; - } else if (header.version !=3D VDI_VERSION_1_1) { + } + if (header.version !=3D VDI_VERSION_1_1) { error_setg(errp, "unsupported VDI image (version %" PRIu32 ".%" PR= Iu32 ")", header.version >> 16, header.version & 0xffff); ret =3D -ENOTSUP; goto fail; - } else if (header.offset_bmap % SECTOR_SIZE !=3D 0) { + } + if (header.offset_bmap % SECTOR_SIZE !=3D 0) { /* We only support block maps which start on a sector boundary. */ error_setg(errp, "unsupported VDI image (unaligned block map offse= t " "0x%" PRIx32 ")", header.offset_bmap); ret =3D -ENOTSUP; goto fail; - } else if (header.offset_data % SECTOR_SIZE !=3D 0) { + } + if (header.offset_data % SECTOR_SIZE !=3D 0) { /* We only support data blocks which start on a sector boundary. */ error_setg(errp, "unsupported VDI image (unaligned data offset 0x%" PRIx32 ")", header.offset_data); ret =3D -ENOTSUP; goto fail; - } else if (header.sector_size !=3D SECTOR_SIZE) { + } + if (header.sector_size !=3D SECTOR_SIZE) { error_setg(errp, "unsupported VDI image (sector size %" PRIu32 " is not %u)", header.sector_size, SECTOR_SIZE); ret =3D -ENOTSUP; goto fail; - } else if (header.block_size !=3D DEFAULT_CLUSTER_SIZE) { + } + if (header.block_size !=3D DEFAULT_CLUSTER_SIZE) { error_setg(errp, "unsupported VDI image (block size %" PRIu32 " is not %" PRIu64 ")", header.block_size, DEFAULT_CLUSTER_SIZE); ret =3D -ENOTSUP; goto fail; - } else if (header.disk_size > + } + if (header.disk_size > (uint64_t)header.blocks_in_image * header.block_size) { error_setg(errp, "unsupported VDI image (disk size %" PRIu64 ", " "image bitmap has room for %" PRIu64 ")", @@ -441,15 +447,18 @@ static int vdi_open(BlockDriverState *bs, QDict *opti= ons, int flags, (uint64_t)header.blocks_in_image * header.block_size); ret =3D -ENOTSUP; goto fail; - } else if (!qemu_uuid_is_null(&header.uuid_link)) { + } + if (!qemu_uuid_is_null(&header.uuid_link)) { error_setg(errp, "unsupported VDI image (non-NULL link UUID)"); ret =3D -ENOTSUP; goto fail; - } else if (!qemu_uuid_is_null(&header.uuid_parent)) { + } + if (!qemu_uuid_is_null(&header.uuid_parent)) { error_setg(errp, "unsupported VDI image (non-NULL parent UUID)"); ret =3D -ENOTSUP; goto fail; - } else if (header.blocks_in_image > VDI_BLOCKS_IN_IMAGE_MAX) { + } + if (header.blocks_in_image > VDI_BLOCKS_IN_IMAGE_MAX) { error_setg(errp, "unsupported VDI image " "(too many blocks %u, max is %u)", header.blocks_in_image, VDI_BLOCKS_IN_IMAGE_MAX); --=20 2.17.0