From nobody Fri May 17 11:28:47 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) client-ip=66.175.222.108; envelope-from=bounce+27952+113442+1787277+3901457@groups.io; helo=mail02.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+113442+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1704799750; cv=none; d=zohomail.com; s=zohoarc; b=mb352oaTp6TqqPOfwV7SlPfa5wjDxfkfott9IvQetFbsSOmbtojONX1TcAb8yRqwS8oI7Dzfc/jWJG/s1MkTEoJgNFLuxXCmlisrcYV/hyaks54z9hqAOS5sH38+fDH7y71Py1NhH4V2eUy5TZEDNcdeqeEVug8FY/u4V5HIr9U= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1704799750; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Reply-To:References:Sender:Subject:Subject:To:To:Message-Id; bh=0DEKZi44xlPdxr9hvnfzzuNqexq2ul9BmEf9Q/Vwcnw=; b=F60ag81ieIPDZCndxuImtKw6emeXGknBijVfzKqmjPWcy6ZBSwyu4WDEb76HYJyHalUkvpyXSrf/pJjzp7xtfGmIKTv4MaMLdr6Gtlh/6UzDAbjRsayarhJUndL0L1imgh7nY1/1+u5QroW/XemRWGui0EkwEnS03kI69eoPg7E= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+113442+1787277+3901457@groups.io; dmarc=fail header.from= (p=none dis=none) Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by mx.zohomail.com with SMTPS id 1704799750654746.2934087712463; Tue, 9 Jan 2024 03:29:10 -0800 (PST) Return-Path: DKIM-Signature: a=rsa-sha256; bh=0PVATg0WdKLbOJGzHviX/4szXGeQ2d7++aqYC/H0Hd4=; c=relaxed/simple; d=groups.io; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References:MIME-Version:Precedence:List-Subscribe:List-Help:Sender:List-Id:Mailing-List:Delivered-To:Reply-To:List-Unsubscribe-Post:List-Unsubscribe:Content-Type:Content-Transfer-Encoding; s=20140610; t=1704799750; v=1; b=SwgJm5zp9VhXLADRk1ZsqhWP0+A/E5GqTu24JrJAAI5tUAbXjgTtLUB6BHgFE41pZ0O0PIfU 570gjohUbFlBPYKLgcAs+kr69Bx0/G673WX55vgXrPaQvtd6dhoLvdi9HFdXxZ9qbscuCSXcYgq DaAPusnLOWFIDcq/jgNVPGD8= X-Received: by 127.0.0.2 with SMTP id xgjxYY1788612xjn2CiRt9M0; Tue, 09 Jan 2024 03:29:10 -0800 X-Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by mx.groups.io with SMTP id smtpd.web11.14477.1704799749698613291 for ; Tue, 09 Jan 2024 03:29:09 -0800 X-Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-264-47zyEsB9PMWuUPTb9BHIAQ-1; Tue, 09 Jan 2024 06:29:04 -0500 X-MC-Unique: 47zyEsB9PMWuUPTb9BHIAQ-1 X-Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.rdu2.redhat.com [10.11.54.5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 3D4AA82DFE2; Tue, 9 Jan 2024 11:29:04 +0000 (UTC) X-Received: from dobby.home.kraxel.org (unknown [10.39.194.247]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 0B9DB51E3; Tue, 9 Jan 2024 11:29:04 +0000 (UTC) X-Received: by dobby.home.kraxel.org (Postfix, from userid 1000) id 0613FA7A58; Tue, 9 Jan 2024 12:29:03 +0100 (CET) From: "Gerd Hoffmann" To: devel@edk2.groups.io Cc: Sunil V L , Gerd Hoffmann , Jiewen Yao , oliver@redhat.com, Laszlo Ersek , Andrei Warkentin , Ard Biesheuvel Subject: [edk2-devel] [PATCH v5 1/3] OvmfPkg/RiscVVirt: use gEfiAuthenticatedVariableGuid unconditionally Date: Tue, 9 Jan 2024 12:29:00 +0100 Message-ID: <20240109112902.30002-2-kraxel@redhat.com> In-Reply-To: <20240109112902.30002-1-kraxel@redhat.com> References: <20240109112902.30002-1-kraxel@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.11.54.5 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Precedence: Bulk List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,kraxel@redhat.com List-Unsubscribe-Post: List-Unsubscribe=One-Click List-Unsubscribe: X-Gm-Message-State: 1fB3zvRxLD8O2rm9juzDoNeCx1787277AA= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @groups.io) X-ZM-MESSAGEID: 1704799752318100005 ArmVirt and OVMF are doing the same. See commit d92eaabefbe0 ("OvmfPkg: simplify VARIABLE_STORE_HEADER generation") for details. Suggested-by: L=C3=A1szl=C3=B3 =C3=89rsek Signed-off-by: Gerd Hoffmann Reviewed-by: Sunil V L Reviewed-by: Laszlo Ersek --- OvmfPkg/RiscVVirt/VarStore.fdf.inc | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/OvmfPkg/RiscVVirt/VarStore.fdf.inc b/OvmfPkg/RiscVVirt/VarStor= e.fdf.inc index aba32315cc37..6679c246b3ea 100644 --- a/OvmfPkg/RiscVVirt/VarStore.fdf.inc +++ b/OvmfPkg/RiscVVirt/VarStore.fdf.inc @@ -36,19 +36,12 @@ # Blockmap[1]: End 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ## This is the VARIABLE_STORE_HEADER -!if $(SECURE_BOOT_ENABLE) =3D=3D TRUE + # It is compatible with SECURE_BOOT_ENABLE =3D=3D FALSE as well. # Signature: gEfiAuthenticatedVariableGuid =3D # { 0xaaf32c78, 0x947b, 0x439a, # { 0xa1, 0x80, 0x2e, 0x14, 0x4e, 0xc3, 0x77, 0x92 }} 0x78, 0x2c, 0xf3, 0xaa, 0x7b, 0x94, 0x9a, 0x43, 0xa1, 0x80, 0x2e, 0x14, 0x4e, 0xc3, 0x77, 0x92, -!else - # Signature: gEfiVariableGuid =3D - # { 0xddcf3616, 0x3275, 0x4164, - # { 0x98, 0xb6, 0xfe, 0x85, 0x70, 0x7f, 0xfe, 0x7d }} - 0x16, 0x36, 0xcf, 0xdd, 0x75, 0x32, 0x64, 0x41, - 0x98, 0xb6, 0xfe, 0x85, 0x70, 0x7f, 0xfe, 0x7d, -!endif # Size: 0x40000 (gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariabl= eSize) - # 0x48 (size of EFI_FIRMWARE_VOLUME_HEADER) =3D 0x3FFB8 # This can speed up the Variable Dispatch a bit. --=20 2.43.0 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#113442): https://edk2.groups.io/g/devel/message/113442 Mute This Topic: https://groups.io/mt/103617813/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- From nobody Fri May 17 11:28:47 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) client-ip=66.175.222.108; envelope-from=bounce+27952+113443+1787277+3901457@groups.io; helo=mail02.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+113443+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1704799751; cv=none; d=zohomail.com; s=zohoarc; b=LOodcL/JmflxIERC0OD2eC02KC86NmQEy4UebIw2bEwuXE4zbW67yFnw8iNwUAPat7HtZcnGprGZ0wFNkWrDbg3QYqhTLHeyIDI//69BeFRpDu0IMWAHLfwnHS08UdyEz8tWWmk9McSq20BDpEuN4cdTHi4saMTHeEaBJpEdzhs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1704799751; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Reply-To:References:Sender:Subject:Subject:To:To:Message-Id; bh=UgBcxqr0MovQ7IcbiZn7NjWsgLGJdtn2hfIc3nz1mjE=; b=SucvMCDhe76mNnp4OtCpudZVLCMbpEaG3YfRC8qYZ5Cld9fnSjk7+QlNSoGGcAMtxyCK7qqz00hp/AsgKxvqweiBxWWC3yzuYPB1tKjCKM0Vc0kdXwDglRsA8HM7NO+xRqVYsGT9mCZfotYCA8C5e8JRK4sbdulEahHfegeD7eA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+113443+1787277+3901457@groups.io; dmarc=fail header.from= (p=none dis=none) Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by mx.zohomail.com with SMTPS id 1704799751428103.78517897432039; Tue, 9 Jan 2024 03:29:11 -0800 (PST) Return-Path: DKIM-Signature: a=rsa-sha256; bh=VxANqRA3plYBjaT/bG8RzzzdOdqLABIXCT/85uSiMzw=; c=relaxed/simple; d=groups.io; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References:MIME-Version:Precedence:List-Subscribe:List-Help:Sender:List-Id:Mailing-List:Delivered-To:Reply-To:List-Unsubscribe-Post:List-Unsubscribe:Content-Type:Content-Transfer-Encoding; s=20140610; t=1704799751; v=1; b=POJPPD4IEQlsNz8hS1uYc9fgSdBtvVX2Lng803houBrzaMVSyX1UY8zHwl+5GxIbuBgkuBFF eoS3NAWuFocPC07sjz4XX5UPob8uzWHtJpL9q+IW+x46jBcSFA/Afdd+ZrBSugneqJixNDRznOe oOMV9lK253gtDVxqbXzuzWwA= X-Received: by 127.0.0.2 with SMTP id Yw3PYY1788612xRbLURKlDKx; Tue, 09 Jan 2024 03:29:11 -0800 X-Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by mx.groups.io with SMTP id smtpd.web11.14478.1704799749795519124 for ; Tue, 09 Jan 2024 03:29:09 -0800 X-Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-330-jo8QB574MZijD-1GcuKEaw-1; Tue, 09 Jan 2024 06:29:05 -0500 X-MC-Unique: jo8QB574MZijD-1GcuKEaw-1 X-Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 8327A8314EF; Tue, 9 Jan 2024 11:29:05 +0000 (UTC) X-Received: from dobby.home.kraxel.org (unknown [10.39.194.247]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 503792026D66; Tue, 9 Jan 2024 11:29:05 +0000 (UTC) X-Received: by dobby.home.kraxel.org (Postfix, from userid 1000) id 07B53A7A5A; Tue, 9 Jan 2024 12:29:03 +0100 (CET) From: "Gerd Hoffmann" To: devel@edk2.groups.io Cc: Sunil V L , Gerd Hoffmann , Jiewen Yao , oliver@redhat.com, Laszlo Ersek , Andrei Warkentin , Ard Biesheuvel Subject: [edk2-devel] [PATCH v5 2/3] OvmfPkg/VirtNorFlashDxe: stop accepting gEfiVariableGuid Date: Tue, 9 Jan 2024 12:29:01 +0100 Message-ID: <20240109112902.30002-3-kraxel@redhat.com> In-Reply-To: <20240109112902.30002-1-kraxel@redhat.com> References: <20240109112902.30002-1-kraxel@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.11.54.4 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Precedence: Bulk List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,kraxel@redhat.com List-Unsubscribe-Post: List-Unsubscribe=One-Click List-Unsubscribe: X-Gm-Message-State: 8J5nU9wTTKvQqGrVsRmRPnS3x1787277AA= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @groups.io) X-ZM-MESSAGEID: 1704799752318100004 Only accept gEfiAuthenticatedVariableGuid when checking the variable store header in ValidateFvHeader(). The edk2 code base has been switched to use the authenticated varstore format unconditionally (even in case secure boot is not used or supported) a few years ago. Suggested-by: L=C3=A1szl=C3=B3 =C3=89rsek Signed-off-by: Gerd Hoffmann Reviewed-by: Laszlo Ersek --- OvmfPkg/VirtNorFlashDxe/VirtNorFlashFvb.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/OvmfPkg/VirtNorFlashDxe/VirtNorFlashFvb.c b/OvmfPkg/VirtNorFla= shDxe/VirtNorFlashFvb.c index 5ee98e9b595a..9a614ae4b24d 100644 --- a/OvmfPkg/VirtNorFlashDxe/VirtNorFlashFvb.c +++ b/OvmfPkg/VirtNorFlashDxe/VirtNorFlashFvb.c @@ -239,9 +239,7 @@ ValidateFvHeader ( VariableStoreHeader =3D (VARIABLE_STORE_HEADER *)((UINTN)FwVolHeader + F= wVolHeader->HeaderLength); =20 // Check the Variable Store Guid - if (!CompareGuid (&VariableStoreHeader->Signature, &gEfiVariableGuid) && - !CompareGuid (&VariableStoreHeader->Signature, &gEfiAuthenticatedVar= iableGuid)) - { + if (!CompareGuid (&VariableStoreHeader->Signature, &gEfiAuthenticatedVar= iableGuid)) { DEBUG (( DEBUG_INFO, "%a: Variable Store Guid non-compatible\n", --=20 2.43.0 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#113443): https://edk2.groups.io/g/devel/message/113443 Mute This Topic: https://groups.io/mt/103617814/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- From nobody Fri May 17 11:28:47 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) client-ip=66.175.222.108; envelope-from=bounce+27952+113441+1787277+3901457@groups.io; helo=mail02.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+113441+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1704799751; cv=none; d=zohomail.com; s=zohoarc; b=H9BMm95OiLlqyfEAX3vpss3WowUOUpht3B/z+uyRfe9s80URRIwkUatiaR5EWf+ahu7H7CkGA1SClhRJFbMuDnpNbKTB1O1T+pqD4B2IvLA14b0KnJEv/IUeODu2/3z2VVfn7Pv8tLkjhlcReAnXOy7713CGuBmrgN8w6JeJx3Q= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1704799751; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Reply-To:References:Sender:Subject:Subject:To:To:Message-Id; bh=WVnYcfyAKZmqk4xj+GMLfyEfnI95wEgXBfRqCGSpqlw=; b=crrBvx37vruy2m3qIgng8uLv0bEIeN/W1gLp4dD5WBjTk3TKs74jsX3lMtYZuz3TNNEjZ50zv6IL1kHk+kC+7OtJN4GU6wIEQ/NOJqSerYQrXvZJPC3wY4TgvgnndL8ge6KiIzmEM+d21TQQWi2YsjvQLqbrKn7UKejBHw1+788= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+113441+1787277+3901457@groups.io; dmarc=fail header.from= (p=none dis=none) Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by mx.zohomail.com with SMTPS id 1704799751517453.63060659998234; Tue, 9 Jan 2024 03:29:11 -0800 (PST) Return-Path: DKIM-Signature: a=rsa-sha256; bh=SxwWcuGegbBCAGPuuM4SBHQPEtARJE0Q9mKha5rPJP8=; c=relaxed/simple; d=groups.io; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References:MIME-Version:Precedence:List-Subscribe:List-Help:Sender:List-Id:Mailing-List:Delivered-To:Reply-To:List-Unsubscribe-Post:List-Unsubscribe:Content-Transfer-Encoding:Content-Type; s=20140610; t=1704799751; v=1; b=Bm14yfPqIiqsd+s8iJJrU35w8DNMyx2IX01oZjQpXdWU6fOiDqo6faakhuZpJAb3GuywTp/m bCzt4tqUgqLiz+hUyiHltZk8usJIWY3ey+HwJpnN/NAQO5SkMGzeDPgusYWrc59WGHPbFZTiIuK gIZCtcl4pH4pcIwZm3loNtXs= X-Received: by 127.0.0.2 with SMTP id wSWOYY1788612xtnbBPxc8cD; Tue, 09 Jan 2024 03:29:11 -0800 X-Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by mx.groups.io with SMTP id smtpd.web10.14535.1704799749460411557 for ; Tue, 09 Jan 2024 03:29:09 -0800 X-Received: from mimecast-mx02.redhat.com (mx-ext.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-516-EzMBz9XhPYiz3jYx5W1oFw-1; Tue, 09 Jan 2024 06:29:07 -0500 X-MC-Unique: EzMBz9XhPYiz3jYx5W1oFw-1 X-Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.rdu2.redhat.com [10.11.54.8]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 074FC3C0F36B; Tue, 9 Jan 2024 11:29:07 +0000 (UTC) X-Received: from dobby.home.kraxel.org (unknown [10.39.194.247]) by smtp.corp.redhat.com (Postfix) with ESMTPS id A9400C15E6A; Tue, 9 Jan 2024 11:29:06 +0000 (UTC) X-Received: by dobby.home.kraxel.org (Postfix, from userid 1000) id 0A0DFA7A5C; Tue, 9 Jan 2024 12:29:03 +0100 (CET) From: "Gerd Hoffmann" To: devel@edk2.groups.io Cc: Sunil V L , Gerd Hoffmann , Jiewen Yao , oliver@redhat.com, Laszlo Ersek , Andrei Warkentin , Ard Biesheuvel Subject: [edk2-devel] [PATCH v5 3/3] OvmfPkg/VirtNorFlashDxe: sanity-check variables Date: Tue, 9 Jan 2024 12:29:02 +0100 Message-ID: <20240109112902.30002-4-kraxel@redhat.com> In-Reply-To: <20240109112902.30002-1-kraxel@redhat.com> References: <20240109112902.30002-1-kraxel@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.11.54.8 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Precedence: Bulk List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,kraxel@redhat.com List-Unsubscribe-Post: List-Unsubscribe=One-Click List-Unsubscribe: X-Gm-Message-State: Qrl3lGg8GTpceJTwzzBmBpXBx1787277AA= Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @groups.io) X-ZM-MESSAGEID: 1704799752341100009 Content-Type: text/plain; charset="utf-8"; x-default="true" Extend the ValidateFvHeader function, additionally to the header checks walk over the list of variables and sanity check them. In case we find inconsistencies indicating variable store corruption return EFI_NOT_FOUND so the variable store will be re-initialized. Signed-off-by: Gerd Hoffmann Reviewed-by: Laszlo Ersek --- OvmfPkg/VirtNorFlashDxe/VirtNorFlashDxe.inf | 1 + OvmfPkg/VirtNorFlashDxe/VirtNorFlashFvb.c | 147 +++++++++++++++++++- 2 files changed, 143 insertions(+), 5 deletions(-) diff --git a/OvmfPkg/VirtNorFlashDxe/VirtNorFlashDxe.inf b/OvmfPkg/VirtNorF= lashDxe/VirtNorFlashDxe.inf index 2a3d4a218e61..f549400280a1 100644 --- a/OvmfPkg/VirtNorFlashDxe/VirtNorFlashDxe.inf +++ b/OvmfPkg/VirtNorFlashDxe/VirtNorFlashDxe.inf @@ -34,6 +34,7 @@ [LibraryClasses] DxeServicesTableLib HobLib IoLib + SafeIntLib UefiBootServicesTableLib UefiDriverEntryPoint UefiLib diff --git a/OvmfPkg/VirtNorFlashDxe/VirtNorFlashFvb.c b/OvmfPkg/VirtNorFla= shDxe/VirtNorFlashFvb.c index 9a614ae4b24d..ca2e40743dfd 100644 --- a/OvmfPkg/VirtNorFlashDxe/VirtNorFlashFvb.c +++ b/OvmfPkg/VirtNorFlashDxe/VirtNorFlashFvb.c @@ -12,6 +12,7 @@ #include #include #include +#include #include =20 #include @@ -185,11 +186,12 @@ ValidateFvHeader ( IN NOR_FLASH_INSTANCE *Instance ) { - UINT16 Checksum; - EFI_FIRMWARE_VOLUME_HEADER *FwVolHeader; - VARIABLE_STORE_HEADER *VariableStoreHeader; - UINTN VariableStoreLength; - UINTN FvLength; + UINT16 Checksum; + CONST EFI_FIRMWARE_VOLUME_HEADER *FwVolHeader; + CONST VARIABLE_STORE_HEADER *VariableStoreHeader; + UINTN VarOffset; + UINTN VariableStoreLength; + UINTN FvLength; =20 FwVolHeader =3D (EFI_FIRMWARE_VOLUME_HEADER *)Instance->RegionBaseAddres= s; =20 @@ -258,6 +260,141 @@ ValidateFvHeader ( return EFI_NOT_FOUND; } =20 + // + // check variables + // + DEBUG ((DEBUG_INFO, "%a: checking variables\n", __func__)); + VarOffset =3D sizeof (*VariableStoreHeader); + for ( ; ;) { + UINTN VarHeaderEnd; + UINTN VarNameEnd; + UINTN VarEnd; + UINTN VarPadding; + CONST AUTHENTICATED_VARIABLE_HEADER *VarHeader; + CONST CHAR16 *VarName; + CONST CHAR8 *VarState; + RETURN_STATUS Status; + + Status =3D SafeUintnAdd (VarOffset, sizeof (*VarHeader), &VarHeaderEnd= ); + if (RETURN_ERROR (Status)) { + DEBUG ((DEBUG_ERROR, "%a: integer overflow\n", __func__)); + return EFI_NOT_FOUND; + } + + if (VarHeaderEnd >=3D VariableStoreHeader->Size) { + if (VarOffset <=3D VariableStoreHeader->Size - sizeof (UINT16)) { + CONST UINT16 *StartId =3D (VOID *)((UINTN)VariableStoreHeader + V= arOffset); + if (*StartId =3D=3D 0x55aa) { + DEBUG ((DEBUG_ERROR, "%a: startid at invalid location\n", __func= __)); + return EFI_NOT_FOUND; + } + } + + DEBUG ((DEBUG_INFO, "%a: end of var list (no space left)\n", __func_= _)); + break; + } + + VarHeader =3D (VOID *)((UINTN)VariableStoreHeader + VarOffset); + if (VarHeader->StartId !=3D 0x55aa) { + DEBUG ((DEBUG_INFO, "%a: end of var list (no startid)\n", __func__)); + break; + } + + VarName =3D NULL; + switch (VarHeader->State) { + // usage: State =3D VAR_HEADER_VALID_ONLY + case VAR_HEADER_VALID_ONLY: + VarState =3D "header-ok"; + VarName =3D L""; + break; + + // usage: State =3D VAR_ADDED + case VAR_ADDED: + VarState =3D "ok"; + break; + + // usage: State &=3D VAR_IN_DELETED_TRANSITION + case VAR_ADDED &VAR_IN_DELETED_TRANSITION: + VarState =3D "del-in-transition"; + break; + + // usage: State &=3D VAR_DELETED + case VAR_ADDED &VAR_DELETED: + case VAR_ADDED &VAR_DELETED &VAR_IN_DELETED_TRANSITION: + VarState =3D "deleted"; + break; + + default: + DEBUG (( + DEBUG_ERROR, + "%a: invalid variable state: 0x%x\n", + __func__, + VarHeader->State + )); + return EFI_NOT_FOUND; + } + + Status =3D SafeUintnAdd (VarHeaderEnd, VarHeader->NameSize, &VarNameEn= d); + if (RETURN_ERROR (Status)) { + DEBUG ((DEBUG_ERROR, "%a: integer overflow\n", __func__)); + return EFI_NOT_FOUND; + } + + Status =3D SafeUintnAdd (VarNameEnd, VarHeader->DataSize, &VarEnd); + if (RETURN_ERROR (Status)) { + DEBUG ((DEBUG_ERROR, "%a: integer overflow\n", __func__)); + return EFI_NOT_FOUND; + } + + if (VarEnd > VariableStoreHeader->Size) { + DEBUG (( + DEBUG_ERROR, + "%a: invalid variable size: 0x%Lx + 0x%Lx + 0x%x + 0x%x > 0x%x\n", + __func__, + (UINT64)VarOffset, + (UINT64)(sizeof (*VarHeader)), + VarHeader->NameSize, + VarHeader->DataSize, + VariableStoreHeader->Size + )); + return EFI_NOT_FOUND; + } + + if (((VarHeader->NameSize & 1) !=3D 0) || + (VarHeader->NameSize < 4)) + { + DEBUG ((DEBUG_ERROR, "%a: invalid name size\n", __func__)); + return EFI_NOT_FOUND; + } + + if (VarName =3D=3D NULL) { + VarName =3D (VOID *)((UINTN)VariableStoreHeader + VarHeaderEnd); + if (VarName[VarHeader->NameSize / 2 - 1] !=3D L'\0') { + DEBUG ((DEBUG_ERROR, "%a: name is not null terminated\n", __func__= )); + return EFI_NOT_FOUND; + } + } + + DEBUG (( + DEBUG_VERBOSE, + "%a: +0x%04Lx: name=3D0x%x data=3D0x%x guid=3D%g '%s' (%a)\n", + __func__, + (UINT64)VarOffset, + VarHeader->NameSize, + VarHeader->DataSize, + &VarHeader->VendorGuid, + VarName, + VarState + )); + + VarPadding =3D (4 - (VarEnd & 3)) & 3; + Status =3D SafeUintnAdd (VarEnd, VarPadding, &VarOffset); + if (RETURN_ERROR (Status)) { + DEBUG ((DEBUG_ERROR, "%a: integer overflow\n", __func__)); + return EFI_NOT_FOUND; + } + } + return EFI_SUCCESS; } =20 --=20 2.43.0 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#113441): https://edk2.groups.io/g/devel/message/113441 Mute This Topic: https://groups.io/mt/103617812/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-