From nobody Mon Apr 29 09:43:37 2024 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=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1606733952; cv=none; d=zohomail.com; s=zohoarc; b=BuqdCavUQ4k0+EuD8kewwRiqB9HVOn+5bf3RDpq3yu/WiZM6XT3IWrUFjOPGuujHzVR/X2Wa/n+4i/UQx8hSSpJDMYwDBGGRLuC+Y3w6EgAkHPM74ZlJIaEmUM0vGOSGi1FKEbTJsPnSP1YzMyBErqSkfpL2ZhwkahMcp2U1rUI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1606733952; 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:References:Sender:Subject:To; bh=9Z8YIHOTrHAJZIp7WFpZLFjT3VYESTLOytA7J/XdD1M=; b=RAYcZimhrC9MO46b5K0e8eDWJeQjc7Egj0PMs72WiE2/mVrbq2xA6LRAwuZqP0v+dZ8bonYMrLE6jX3daXWPZT90OB1R+EGR0jBEUhpbF9+T0WmqCMp+aAAXlS0ehGb34pFo2yuAwDcCrzvonmyGL0k5EPUHiizSqfABR7TI4XI= 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=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1606733952597427.1984314768407; Mon, 30 Nov 2020 02:59:12 -0800 (PST) Received: from localhost ([::1]:56160 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kjgtj-0007e5-Hx for importer@patchew.org; Mon, 30 Nov 2020 05:59:11 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:58812) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kjgro-0006eM-FU for qemu-devel@nongnu.org; Mon, 30 Nov 2020 05:57:12 -0500 Received: from us-smtp-delivery-124.mimecast.com ([216.205.24.124]:56412) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1kjgrm-00063m-06 for qemu-devel@nongnu.org; Mon, 30 Nov 2020 05:57:11 -0500 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-157-Johi0LqpMdqm5h9ZbCvuLg-1; Mon, 30 Nov 2020 05:57:07 -0500 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id E515380B736; Mon, 30 Nov 2020 10:57:05 +0000 (UTC) Received: from merkur.fritz.box (ovpn-114-117.ams2.redhat.com [10.36.114.117]) by smtp.corp.redhat.com (Postfix) with ESMTP id A014F18A9D; Mon, 30 Nov 2020 10:57:04 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1606733829; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=9Z8YIHOTrHAJZIp7WFpZLFjT3VYESTLOytA7J/XdD1M=; b=BoA+KJs6zD4cZLXi8i7WI3H1DOj/ru4IKC8LvlcxFY4Ab9tInK3MSuH79XD8XphOcmlQ9S WBHmYZqrpL3hvcdXLTBLvmmeV4cM/UW2/5u3IihAFqoFVsVhFCfJSIr9y0Yxs8eyJyJdof iJsM8JktSS/e7PBwBGUEpSRjBqDLOdM= X-MC-Unique: Johi0LqpMdqm5h9ZbCvuLg-1 From: Kevin Wolf To: qemu-devel@nongnu.org Subject: [PATCH 1/4] crypto: Move USER_CREATABLE to secret_common base class Date: Mon, 30 Nov 2020 11:56:12 +0100 Message-Id: <20201130105615.21799-2-kwolf@redhat.com> In-Reply-To: <20201130105615.21799-1-kwolf@redhat.com> References: <20201130105615.21799-1-kwolf@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=kwolf@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com 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.205.24.124; envelope-from=kwolf@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -35 X-Spam_score: -3.6 X-Spam_bar: --- X-Spam_report: (-3.6 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.496, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: kwolf@redhat.com, jasowang@redhat.com, fnu.vikram@xilinx.com, berrange@redhat.com, pisa@cmp.felk.cvut.cz Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Instead of duplicating the code for user creatable objects in secret and secret_keyring, move it to the common base clase secret_common. As the base class is abstract, it won't become user creatable itself. Signed-off-by: Kevin Wolf --- crypto/secret.c | 14 -------------- crypto/secret_common.c | 15 +++++++++++++++ crypto/secret_keyring.c | 14 -------------- 3 files changed, 15 insertions(+), 28 deletions(-) diff --git a/crypto/secret.c b/crypto/secret.c index 281cb81f0f..44eaff16f6 100644 --- a/crypto/secret.c +++ b/crypto/secret.c @@ -107,13 +107,6 @@ qcrypto_secret_prop_get_file(Object *obj, } =20 =20 -static void -qcrypto_secret_complete(UserCreatable *uc, Error **errp) -{ - object_property_set_bool(OBJECT(uc), "loaded", true, errp); -} - - static void qcrypto_secret_finalize(Object *obj) { @@ -129,9 +122,6 @@ qcrypto_secret_class_init(ObjectClass *oc, void *data) QCryptoSecretCommonClass *sic =3D QCRYPTO_SECRET_COMMON_CLASS(oc); sic->load_data =3D qcrypto_secret_load_data; =20 - UserCreatableClass *ucc =3D USER_CREATABLE_CLASS(oc); - ucc->complete =3D qcrypto_secret_complete; - object_class_property_add_str(oc, "data", qcrypto_secret_prop_get_data, qcrypto_secret_prop_set_data); @@ -148,10 +138,6 @@ static const TypeInfo qcrypto_secret_info =3D { .instance_finalize =3D qcrypto_secret_finalize, .class_size =3D sizeof(QCryptoSecretClass), .class_init =3D qcrypto_secret_class_init, - .interfaces =3D (InterfaceInfo[]) { - { TYPE_USER_CREATABLE }, - { } - } }; =20 =20 diff --git a/crypto/secret_common.c b/crypto/secret_common.c index b03d530867..35b82cb531 100644 --- a/crypto/secret_common.c +++ b/crypto/secret_common.c @@ -268,6 +268,13 @@ qcrypto_secret_prop_get_keyid(Object *obj, } =20 =20 +static void +qcrypto_secret_complete(UserCreatable *uc, Error **errp) +{ + object_property_set_bool(OBJECT(uc), "loaded", true, errp); +} + + static void qcrypto_secret_finalize(Object *obj) { @@ -281,6 +288,10 @@ qcrypto_secret_finalize(Object *obj) static void qcrypto_secret_class_init(ObjectClass *oc, void *data) { + UserCreatableClass *ucc =3D USER_CREATABLE_CLASS(oc); + + ucc->complete =3D qcrypto_secret_complete; + object_class_property_add_bool(oc, "loaded", qcrypto_secret_prop_get_loaded, qcrypto_secret_prop_set_loaded); @@ -390,6 +401,10 @@ static const TypeInfo qcrypto_secret_info =3D { .class_size =3D sizeof(QCryptoSecretCommonClass), .class_init =3D qcrypto_secret_class_init, .abstract =3D true, + .interfaces =3D (InterfaceInfo[]) { + { TYPE_USER_CREATABLE }, + { } + } }; =20 =20 diff --git a/crypto/secret_keyring.c b/crypto/secret_keyring.c index 10d8bc48a0..1b7edec84a 100644 --- a/crypto/secret_keyring.c +++ b/crypto/secret_keyring.c @@ -102,22 +102,12 @@ qcrypto_secret_prop_get_key(Object *obj, Visitor *v, } =20 =20 -static void -qcrypto_secret_keyring_complete(UserCreatable *uc, Error **errp) -{ - object_property_set_bool(OBJECT(uc), "loaded", true, errp); -} - - static void qcrypto_secret_keyring_class_init(ObjectClass *oc, void *data) { QCryptoSecretCommonClass *sic =3D QCRYPTO_SECRET_COMMON_CLASS(oc); sic->load_data =3D qcrypto_secret_keyring_load_data; =20 - UserCreatableClass *ucc =3D USER_CREATABLE_CLASS(oc); - ucc->complete =3D qcrypto_secret_keyring_complete; - object_class_property_add(oc, "serial", "int32_t", qcrypto_secret_prop_get_key, qcrypto_secret_prop_set_key, @@ -130,10 +120,6 @@ static const TypeInfo qcrypto_secret_info =3D { .name =3D TYPE_QCRYPTO_SECRET_KEYRING, .instance_size =3D sizeof(QCryptoSecretKeyring), .class_init =3D qcrypto_secret_keyring_class_init, - .interfaces =3D (InterfaceInfo[]) { - { TYPE_USER_CREATABLE }, - { } - } }; =20 =20 --=20 2.28.0 From nobody Mon Apr 29 09:43:37 2024 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=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1606734151; cv=none; d=zohomail.com; s=zohoarc; b=Fir1pjkIgUoEdyOUktIaHigNw3/5LBjHzaWP/CSRq5/3vvhe1+roXR0JsTOLIMkS053fCcIAuuzVUdY9Wb+EZhqGXiIEHo9r9x1O3vzyLoAc+BCaYjN3CCNUGPkjHmtEh1fidgo3vGfe5H8vGswULv6fLghPI4F8XuJkSvV+BAE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1606734151; 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:References:Sender:Subject:To; bh=MEip2j71Edqqa1PCGfx1mJTINqjJV4OUvhnOpck7vbc=; b=kWzHRENgYQK5gw2lHvURKBEQMjVJMEqq+xeFu8nNFVqo7BnoPSaSxozXPHQ5ONFrlTu/p5UpPWrLdjxWl3vP1E84sHM/+hKOdPViWGOBJFdd4r5EXaeIVO2tMMy1aQvKr8GW3QbI67ydUD0dxqo072MbCYS7PGXSJLhpLAjms9M= 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=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1606734151495165.53373616025442; Mon, 30 Nov 2020 03:02:31 -0800 (PST) Received: from localhost ([::1]:33700 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kjgwu-0002Ar-27 for importer@patchew.org; Mon, 30 Nov 2020 06:02:28 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:58836) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kjgrp-0006eb-5t for qemu-devel@nongnu.org; Mon, 30 Nov 2020 05:57:13 -0500 Received: from us-smtp-delivery-124.mimecast.com ([216.205.24.124]:55883) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1kjgrn-00064D-LE for qemu-devel@nongnu.org; Mon, 30 Nov 2020 05:57:12 -0500 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-247-xbs4Y6FvPkG6tDUVfXeqBg-1; Mon, 30 Nov 2020 05:57:08 -0500 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 7D7FB8144F2; Mon, 30 Nov 2020 10:57:07 +0000 (UTC) Received: from merkur.fritz.box (ovpn-114-117.ams2.redhat.com [10.36.114.117]) by smtp.corp.redhat.com (Postfix) with ESMTP id 37B491346F; Mon, 30 Nov 2020 10:57:06 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1606733831; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=MEip2j71Edqqa1PCGfx1mJTINqjJV4OUvhnOpck7vbc=; b=bcmxzSn/DQluacTMENAp3ssLfbCy1M+tLiIa6Fis/abQ0+i/q/Ai6sOAM4gCrks9XIrw+J 0Vfy7VGIiQeQ/JOXZequ5mFxEyy9CMV1Ei58sqdD2uOpDGnKVBaViEc7PA4FuHrRHuEC6U FWnwqdBEkauZMbWqeR0T+9gg/aiVaM0= X-MC-Unique: xbs4Y6FvPkG6tDUVfXeqBg-1 From: Kevin Wolf To: qemu-devel@nongnu.org Subject: [PATCH 2/4] crypto: Forbid broken unloading of secrets Date: Mon, 30 Nov 2020 11:56:13 +0100 Message-Id: <20201130105615.21799-3-kwolf@redhat.com> In-Reply-To: <20201130105615.21799-1-kwolf@redhat.com> References: <20201130105615.21799-1-kwolf@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=kwolf@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com 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.205.24.124; envelope-from=kwolf@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -35 X-Spam_score: -3.6 X-Spam_bar: --- X-Spam_report: (-3.6 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.496, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: kwolf@redhat.com, jasowang@redhat.com, fnu.vikram@xilinx.com, berrange@redhat.com, pisa@cmp.felk.cvut.cz Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" qcrypto_secret_prop_set_loaded() forgets to reset secret->rawdata after unloading a secret, which will lead to a double free at some point. Because there is no use case for unloading an already loaded secret (apart from deleting the whole secret object) and we know that nobody could use this because it would lead to crashes, let's just forbid the operation instead of fixing the unloading. Eventually, we'll want to get rid of 'loaded' in the external interface, but for the meantime this is more consistent with rng, which has a similar property 'opened' that also can't be reset to false after it became true. Signed-off-by: Kevin Wolf --- crypto/secret_common.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/crypto/secret_common.c b/crypto/secret_common.c index 35b82cb531..714a15d5e5 100644 --- a/crypto/secret_common.c +++ b/crypto/secret_common.c @@ -191,9 +191,9 @@ qcrypto_secret_prop_set_loaded(Object *obj, =20 secret->rawdata =3D input; secret->rawlen =3D inputlen; - } else { - g_free(secret->rawdata); - secret->rawlen =3D 0; + } else if (secret->rawdata) { + error_setg(errp, "Cannot unload secret"); + return; } } =20 --=20 2.28.0 From nobody Mon Apr 29 09:43:37 2024 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=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1606734158; cv=none; d=zohomail.com; s=zohoarc; b=ifiHRzFflsB9BNTpYKFH+PFUjA21xeRGwu2YdpXawxXxISw19uN69LmvJYvnh1grMaqHbNmqpc2hZFBcV8oVBW6uZHZKJ+qkq3ulgcTIF58Cz62AfX9n1BmMm/lnHZX6E/3bU6X7AZn7Cw9JbMqYq2od3uLBr0KfRLddDjOQkdo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1606734158; 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:References:Sender:Subject:To; bh=MvCNeNeGTjGF8SPxJZozP0n7zHpwAzwX5Dfx0lMZilY=; b=Fi+EHOeByRFdU4CS5pr+6Oqdbs6A3vjhUrEa04fq6ZBwvXKf4yN/BY0e+2dcyJmTWa6NXkFuhhUxcrUBberl+nsjO93fFaJMZCCI9vL/HBxg5EcEj3Tcw35o3wZi6XXsSiQy44KVvq5vZkixdynY+0aQY+5f4hYfGegepKVQyK0= 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=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1606734158109317.5557831523249; Mon, 30 Nov 2020 03:02:38 -0800 (PST) Received: from localhost ([::1]:33500 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kjgwq-00025o-6b for importer@patchew.org; Mon, 30 Nov 2020 06:02:24 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:58890) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kjgrt-0006kj-QQ for qemu-devel@nongnu.org; Mon, 30 Nov 2020 05:57:17 -0500 Received: from us-smtp-delivery-124.mimecast.com ([63.128.21.124]:50661) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1kjgrr-000665-5I for qemu-devel@nongnu.org; Mon, 30 Nov 2020 05:57:17 -0500 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-436-lEXHzzIhNTWeinrq3Xa9ag-1; Mon, 30 Nov 2020 05:57:10 -0500 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 1135B8F4E9; Mon, 30 Nov 2020 10:57:09 +0000 (UTC) Received: from merkur.fritz.box (ovpn-114-117.ams2.redhat.com [10.36.114.117]) by smtp.corp.redhat.com (Postfix) with ESMTP id C36C260BD9; Mon, 30 Nov 2020 10:57:07 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1606733834; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=MvCNeNeGTjGF8SPxJZozP0n7zHpwAzwX5Dfx0lMZilY=; b=NaC0Zi3bNBeAiVqzP4xfiJAIsXrbgdV+ls7mCnCYdei82BvpjPRDcR5uaPz3w/af3uHptZ lP5XmD+3fnoOCPE/njBBZjzmu7w8xnMSwOiX/1g1RmBjQOe/iWOkM2liIZ4xkZCpGqhQpt vLYK71xs24NAeVblcdByi35qLOeIMKA= X-MC-Unique: lEXHzzIhNTWeinrq3Xa9ag-1 From: Kevin Wolf To: qemu-devel@nongnu.org Subject: [PATCH 3/4] crypto: Fix memory leaks in set_loaded for tls-* Date: Mon, 30 Nov 2020 11:56:14 +0100 Message-Id: <20201130105615.21799-4-kwolf@redhat.com> In-Reply-To: <20201130105615.21799-1-kwolf@redhat.com> References: <20201130105615.21799-1-kwolf@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=kwolf@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com 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=63.128.21.124; envelope-from=kwolf@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -35 X-Spam_score: -3.6 X-Spam_bar: --- X-Spam_report: (-3.6 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.496, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=-0.01, RCVD_IN_MSPIKE_WL=-0.01, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: kwolf@redhat.com, jasowang@redhat.com, fnu.vikram@xilinx.com, berrange@redhat.com, pisa@cmp.felk.cvut.cz Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" If you set the loaded property to true when it was already true, the state is overwritten without freeing the old state first. Change the set_loaded callback so that it always frees the old state (which is a no-op if nothing was loaded) and only then load if requestsd. Signed-off-by: Kevin Wolf --- crypto/tlscredsanon.c | 3 +-- crypto/tlscredspsk.c | 3 +-- crypto/tlscredsx509.c | 3 +-- 3 files changed, 3 insertions(+), 6 deletions(-) diff --git a/crypto/tlscredsanon.c b/crypto/tlscredsanon.c index 30275b6847..bea5f76c55 100644 --- a/crypto/tlscredsanon.c +++ b/crypto/tlscredsanon.c @@ -123,10 +123,9 @@ qcrypto_tls_creds_anon_prop_set_loaded(Object *obj, { QCryptoTLSCredsAnon *creds =3D QCRYPTO_TLS_CREDS_ANON(obj); =20 + qcrypto_tls_creds_anon_unload(creds); if (value) { qcrypto_tls_creds_anon_load(creds, errp); - } else { - qcrypto_tls_creds_anon_unload(creds); } } =20 diff --git a/crypto/tlscredspsk.c b/crypto/tlscredspsk.c index e26807b899..f5a31108d1 100644 --- a/crypto/tlscredspsk.c +++ b/crypto/tlscredspsk.c @@ -192,10 +192,9 @@ qcrypto_tls_creds_psk_prop_set_loaded(Object *obj, { QCryptoTLSCredsPSK *creds =3D QCRYPTO_TLS_CREDS_PSK(obj); =20 + qcrypto_tls_creds_psk_unload(creds); if (value) { qcrypto_tls_creds_psk_load(creds, errp); - } else { - qcrypto_tls_creds_psk_unload(creds); } } =20 diff --git a/crypto/tlscredsx509.c b/crypto/tlscredsx509.c index dd7267ccdb..ed6e1dc202 100644 --- a/crypto/tlscredsx509.c +++ b/crypto/tlscredsx509.c @@ -694,10 +694,9 @@ qcrypto_tls_creds_x509_prop_set_loaded(Object *obj, { QCryptoTLSCredsX509 *creds =3D QCRYPTO_TLS_CREDS_X509(obj); =20 + qcrypto_tls_creds_x509_unload(creds); if (value) { qcrypto_tls_creds_x509_load(creds, errp); - } else { - qcrypto_tls_creds_x509_unload(creds); } } =20 --=20 2.28.0 From nobody Mon Apr 29 09:43:37 2024 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=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1606734316; cv=none; d=zohomail.com; s=zohoarc; b=hrcnbbmH1998pqNRs2SZW80Hbd3BH2SHdI0pI208OK8ZD6/0YIBTEg78tshCEUZFz6d5jkeP+F/+rqzxGg783IuxHK8USZXYXLuUoMDU/e+6jFCLzH1IyUpwVDIIRD0tDnyNqowiRBxzoqpCTd6yfHzirXHungl9RZkx1FmdkoU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1606734316; 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:References:Sender:Subject:To; bh=9MiopA19M66V1TsNJxAYoYD/sSUIfSwppHxitNP43iE=; b=OW6e2nSgXUB88dkGqqMjjx3OpWsdLBe2mMmJPh3gf1jqrgZqsVGuplHDSyoRjYQjpre1IF0IBzjbp67T8IVM/ZMR/Vxbh8MjP9bZxiUIv2ZX8MPv9aMhz2pURQ4W9DZztWe0lpL7IvgwSzi28pfPKzRQe3HbbKUqP/OsGeTZ6OQ= 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=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1606734316406633.0071232847712; Mon, 30 Nov 2020 03:05:16 -0800 (PST) Received: from localhost ([::1]:39976 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kjgzZ-0004oK-UQ for importer@patchew.org; Mon, 30 Nov 2020 06:05:13 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:58898) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kjgrv-0006mt-Ah for qemu-devel@nongnu.org; Mon, 30 Nov 2020 05:57:19 -0500 Received: from us-smtp-delivery-124.mimecast.com ([63.128.21.124]:51460) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1kjgrq-00065e-QD for qemu-devel@nongnu.org; Mon, 30 Nov 2020 05:57:18 -0500 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-8-A8fUPBAFNEa_Y4tqCzY9_Q-1; Mon, 30 Nov 2020 05:57:11 -0500 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 9C44F1012EA0; Mon, 30 Nov 2020 10:57:10 +0000 (UTC) Received: from merkur.fritz.box (ovpn-114-117.ams2.redhat.com [10.36.114.117]) by smtp.corp.redhat.com (Postfix) with ESMTP id 5A30563BA7; Mon, 30 Nov 2020 10:57:09 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1606733833; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=9MiopA19M66V1TsNJxAYoYD/sSUIfSwppHxitNP43iE=; b=Na/lfnNUOzVhDRPfTEEIN+q5Wz6jrpelPsGEvGFobVgWDslVY2tTs+gR6emjyDM3dKcfyk 9AWJxdgjJRHj34JqNj+Yr//OU9xXgBecq+IJmObltXYjMIJOewXafayRHJ7EFVhb9KBagL 4/ZYDqWseT2Bw/KuhINlLrvIQUz4h28= X-MC-Unique: A8fUPBAFNEa_Y4tqCzY9_Q-1 From: Kevin Wolf To: qemu-devel@nongnu.org Subject: [PATCH 4/4] can-host: Fix crash when 'canbus' property is not set Date: Mon, 30 Nov 2020 11:56:15 +0100 Message-Id: <20201130105615.21799-5-kwolf@redhat.com> In-Reply-To: <20201130105615.21799-1-kwolf@redhat.com> References: <20201130105615.21799-1-kwolf@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=kwolf@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com 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=63.128.21.124; envelope-from=kwolf@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -35 X-Spam_score: -3.6 X-Spam_bar: --- X-Spam_report: (-3.6 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.496, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=-0.01, RCVD_IN_MSPIKE_WL=-0.01, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: kwolf@redhat.com, jasowang@redhat.com, fnu.vikram@xilinx.com, berrange@redhat.com, pisa@cmp.felk.cvut.cz Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Providing the 'if' property, but not 'canbus' segfaults like this: #0 0x0000555555b0f14d in can_bus_insert_client (bus=3D0x0, client=3D0x555= 556aa9af0) at ../net/can/can_core.c:88 #1 0x00005555559c3803 in can_host_connect (ch=3D0x555556aa9ac0, errp=3D0x= 7fffffffd568) at ../net/can/can_host.c:62 #2 0x00005555559c386a in can_host_complete (uc=3D0x555556aa9ac0, errp=3D0= x7fffffffd568) at ../net/can/can_host.c:72 #3 0x0000555555d52de9 in user_creatable_complete (uc=3D0x555556aa9ac0, er= rp=3D0x7fffffffd5c8) at ../qom/object_interfaces.c:23 Add the missing NULL check. Signed-off-by: Kevin Wolf --- net/can/can_host.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/net/can/can_host.c b/net/can/can_host.c index be4547d913..ba7f163d0a 100644 --- a/net/can/can_host.c +++ b/net/can/can_host.c @@ -53,6 +53,11 @@ static void can_host_connect(CanHostState *ch, Error **e= rrp) CanHostClass *chc =3D CAN_HOST_GET_CLASS(ch); Error *local_err =3D NULL; =20 + if (ch->bus =3D=3D NULL) { + error_setg(errp, "'canbus' property not set"); + return; + } + chc->connect(ch, &local_err); if (local_err) { error_propagate(errp, local_err); --=20 2.28.0