From nobody Mon Feb 9 08:11:09 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=nongnu.org ARC-Seal: i=1; a=rsa-sha256; t=1690882892; cv=none; d=zohomail.com; s=zohoarc; b=OG81U6UbBysny0pdo/hdggoFIWoe9ykndrs+vFeRi9gYqFYVBzmiB3bhRwkNYqTILsCHv6uv7iVxyb17AmtAfO6YxDLGLzXDY/IEuuGfVS0DQU9mx4IEYqXABR4Z47tY4Ii+0/98+p+IVaK5cbGR0j5YvhVcx3rJdi1rVgebqQQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1690882892; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To; bh=FUZxpWSH/L5X6IBfIQ9cdUarzYKJ1XDsqYITK2OwJpI=; b=EcVYL6BKKJcbSlRhf2eIzc+hqGf6AZVFcHj4SNw0iwoIq37ivlnTc0NQvjbc4RtgLx3n68/ItGiMpX09Do+hpfPLeCvbbk3qwMxCye2X32tDm0iDbSqiEwiR2I1N7XChr3dnUyHHXp4nVMiuwj04WIRA2JdJdifOHWWtkREnwyQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1690882892749291.10366063448987; Tue, 1 Aug 2023 02:41:32 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qQlsH-0003Fi-DB; Tue, 01 Aug 2023 05:41:06 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qQlsC-0003B6-8Z for qemu-devel@nongnu.org; Tue, 01 Aug 2023 05:41:01 -0400 Received: from esa2.hc3370-68.iphmx.com ([216.71.145.153]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qQlsA-0005Bq-KJ for qemu-devel@nongnu.org; Tue, 01 Aug 2023 05:41:00 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1690882858; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=OC1WEjAz+/iKZdGM0POuUnljqucVKYlkFVCZyFyI6m4=; b=UBa8vvQWMyIKl3i/N3IVrQj9ov5bRz27RlyWXcITvn+dui56Zb76tLsT RO0Iqe9lKPLy9aAn8TWVt+zSM8asIRf9TokmA8DfgJGTcj1K3McYAk9RU P+4/orkjnYmE+oY28Uc/wIStRkl+snlkVHl2hxym2/b2P85mL8kaKB53G 8=; Authentication-Results: esa2.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none X-SBRS: 4.0 X-MesageID: 117971006 X-Ironport-Server: esa2.hc3370-68.iphmx.com X-Remote-IP: 162.221.156.123 X-Policy: $RELAYED IronPort-Data: A9a23:n8UrkayPNjVTTjzZi4V6t+dlxirEfRIJ4+MujC+fZmUNrF6WrkUDn TMaCjuEPq6IN2HzeItwOo/j/E4GvJXdn9ZlGwc9qCAxQypGp/SeCIXCJC8cHc8wwu7rFxs7s ppEOrEsCOhuExcwcz/0auCJQUFUjP3OHfykTrafYEidfCc8IA85kxVvhuUltYBhhNm9Emult Mj75sbSIzdJ4RYtWo4vw/zF8EoHUMja4mtC5QRhPqkT5zcyqlFOZH4hDfDpR5fHatE88t6SH 47r0Ly/92XFyBYhYvvNfmHTKxBirhb6ZGBiu1IOM0SQqkEqSh8ai87XAME0e0ZP4whlqvgqo Dl7WT5cfi9yVkHEsLx1vxC1iEiSN4UekFPMCSDXXcB+UyQq2pYjqhljJBheAGEWxgp4KXBV+ L8cCAwiUhysvb2IyajibbZinf12eaEHPKtH0p1h5TTQDPJgSpHfWaTao9Rf2V/chOgXQ6yYP ZBAL2MyMlKZOUYn1lQ/UfrSmM+hgGX/dDtJ7kqYv6Mt70DYzRBr0airO93QEjCPbZwMwRfH/ zqeoQwVBDkBZNi6yjCG806luf/VgCigR8FLSaaRo6sCbFq7mTVIVUx+uUGAieC0j1P7V99BJ kg8/C0ooq4vskuxQbHAswaQ+SDe+ERGApwJTrN8sVvWokbJ3+qHLnkfQ31FSOAJiMMZf2MU3 0XQuIznHgU65dV5VkmhGqeoQSKaYHZEdT9dOnVdFWPp8PG4/tht00unosJLVffs04arQWyYL yWi9nBWulkFsSIcO0xXF3jjiinkmJXGRxVdCu7/DjP8tVMRiGJIiuWVBbnnARVodtzxoqGp5 iRspiRnxLlm4WuxvCKMWv4RO7qi+uyINjbR6XY2Qch5p279pyH/IdoPiN2bGKuOGp9VEQIFn WeJ4V8BjHOtFCXCgVBLj3KZVJ1xkPmI+SXNXfHIdNteCqWdhyfelByCkXW4hji3+GB1yPFXB HtuWZr0ZZrsIfg9nWXeqiZ0+eND+x3SMkuJFcyilUn2juDHDJNXIJ9cWGazgikCxPvsiG3oH xx3Z6NmFz03vDXCXxTq IronPort-HdrOrdr: A9a23:CRgy86gYnkTdtreHz2VbRkUhJHBQXrkji2hC6mlwRA09TyX4ra CTdZEgviMc5wx9ZJhNo7q90cq7IE80i6Qb3WB5B97LYOCMggeVxe9Zg7ff/w== X-Talos-CUID: =?us-ascii?q?9a23=3AQhiHAmr23gbGqmEQ+aKrb7fmUdE+fz7Z7Ev/H0O?= =?us-ascii?q?XMzlXQafMbgCe45oxxg=3D=3D?= X-Talos-MUID: 9a23:QVQ7uAg6adRKalx6CR8UKcMpL5dsxqekC0ExmKoWodSPbjMzYmqGpWHi X-IronPort-AV: E=Sophos;i="6.01,246,1684814400"; d="scan'208";a="117971006" To: CC: Anthony PERARD Subject: [PULL 2/5] xen-block: Avoid leaks on new error path Date: Tue, 1 Aug 2023 10:40:35 +0100 Message-ID: <20230801094038.11026-3-anthony.perard@citrix.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230801094038.11026-1-anthony.perard@citrix.com> References: <20230801094038.11026-1-anthony.perard@citrix.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=216.71.145.153; envelope-from=prvs=570bccec8=anthony.perard@citrix.com; helo=esa2.hc3370-68.iphmx.com X-Spam_score_int: -43 X-Spam_score: -4.4 X-Spam_bar: ---- X-Spam_report: (-4.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-to: Anthony PERARD From: Anthony PERARD via Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1690882894784100002 Content-Type: text/plain; charset="utf-8" From: Anthony PERARD Commit 189829399070 ("xen-block: Use specific blockdev driver") introduced a new error path, without taking care of allocated resources. So only allocate the qdicts after the error check, and free both `filename` and `driver` when we are about to return and thus taking care of both success and error path. Coverity only spotted the leak of qdicts (*_layer variables). Reported-by: Peter Maydell Fixes: Coverity CID 1508722, 1398649 Fixes: 189829399070 ("xen-block: Use specific blockdev driver") Signed-off-by: Anthony PERARD Reviewed-by: Paul Durrant Reviewed-by: Peter Maydell Message-Id: <20230704171819.42564-1-anthony.perard@citrix.com> Signed-off-by: Anthony PERARD --- hw/block/xen-block.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/hw/block/xen-block.c b/hw/block/xen-block.c index f099914831..3906b9058b 100644 --- a/hw/block/xen-block.c +++ b/hw/block/xen-block.c @@ -781,14 +781,15 @@ static XenBlockDrive *xen_block_drive_create(const ch= ar *id, drive =3D g_new0(XenBlockDrive, 1); drive->id =3D g_strdup(id); =20 - file_layer =3D qdict_new(); - driver_layer =3D qdict_new(); - rc =3D stat(filename, &st); if (rc) { error_setg_errno(errp, errno, "Could not stat file '%s'", filename= ); goto done; } + + file_layer =3D qdict_new(); + driver_layer =3D qdict_new(); + if (S_ISBLK(st.st_mode)) { qdict_put_str(file_layer, "driver", "host_device"); } else { @@ -796,7 +797,6 @@ static XenBlockDrive *xen_block_drive_create(const char= *id, } =20 qdict_put_str(file_layer, "filename", filename); - g_free(filename); =20 if (mode && *mode !=3D 'w') { qdict_put_bool(file_layer, "read-only", true); @@ -831,7 +831,6 @@ static XenBlockDrive *xen_block_drive_create(const char= *id, qdict_put_str(file_layer, "locking", "off"); =20 qdict_put_str(driver_layer, "driver", driver); - g_free(driver); =20 qdict_put(driver_layer, "file", file_layer); =20 @@ -842,6 +841,8 @@ static XenBlockDrive *xen_block_drive_create(const char= *id, qobject_unref(driver_layer); =20 done: + g_free(filename); + g_free(driver); if (*errp) { xen_block_drive_destroy(drive, NULL); return NULL; --=20 Anthony PERARD