From nobody Tue May 14 00:17:20 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+112687+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+112687+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1702961428; cv=none; d=zohomail.com; s=zohoarc; b=fj3Vxf4+XegZ7hVn7z7dch0h1MFhdJggCKPvE6D45zBVRy2lqbHkXrjTBl9IHga9Ifxo8b2cAd/tseeVfRLkGsrbvskPMaMsFN0fjGfvPgOxNxZez/0/Otzgqr5lMCvWFnbYkCIlqAUaOzadxqmm6+c0Kln2Mr2dLxO6tbmWvOc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1702961428; h=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=f0t0+mnvlXCho6zn9eI4IzmoCDKu5f1McC9euzcSi7o=; b=oIwZ1VfD204PTtT88AVUmSmaXbL22+MaqVdhS5++m4ti7bIwCHRDk8A4wqnY9mw7anpSdET+j6a/qmMkxddRCqAlJw2y5Tcc9DB42LXNNwUV0FylmToCfldIkxVP0VLhilWG116e3vuEpPL4EQqpa3ce0jViuMf/E4omMrKG6Kk= 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+112687+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 1702961428050373.9652859942123; Mon, 18 Dec 2023 20:50:28 -0800 (PST) Return-Path: DKIM-Signature: a=rsa-sha256; bh=eKVol84bWYiCURoh7nHb5f5JR9t6gS0UU8ytNx6zBhA=; 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; s=20140610; t=1702961427; v=1; b=bKBpNTo21FmqWBvGeobzNomAsqxelh9Rajjk+oWiTf4mdy9v2uIK/le8HgQd4zHLs0jF48w7 KEdAqfIHu3hIH5YpOvedpVk8O3AYFEvMkRGr+GpB7vVDBnBs9dSl82cG8grAjy47IoqsEaGYVLY C1JX8urlL6n98/oO42yFpk6A= X-Received: by 127.0.0.2 with SMTP id duPoYY1788612xFLwCHYFcwc; Mon, 18 Dec 2023 20:50:27 -0800 X-Received: from mgamail.intel.com (mgamail.intel.com [192.55.52.43]) by mx.groups.io with SMTP id smtpd.web11.5762.1702961425788074891 for ; Mon, 18 Dec 2023 20:50:27 -0800 X-IronPort-AV: E=McAfee;i="6600,9927,10928"; a="481798134" X-IronPort-AV: E=Sophos;i="6.04,287,1695711600"; d="scan'208";a="481798134" X-Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Dec 2023 20:50:27 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10928"; a="841752582" X-IronPort-AV: E=Sophos;i="6.04,287,1695711600"; d="scan'208";a="841752582" X-Received: from liyi4-desktop.ccr.corp.intel.com ([10.239.153.29]) by fmsmga008-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Dec 2023 20:50:25 -0800 From: "Li, Yi" To: devel@edk2.groups.io Cc: Yi Li , Michael D Kinney , Liming Gao , Zhiguang Liu Subject: [edk2-devel] [PATCH 1/2] MdePkg: Add DECLARE_LENGTH opcode of dependency expression Date: Tue, 19 Dec 2023 12:50:12 +0800 Message-ID: <20231219045013.1425-2-yi1.li@intel.com> In-Reply-To: <20231219045013.1425-1-yi1.li@intel.com> References: <20231219045013.1425-1-yi1.li@intel.com> MIME-Version: 1.0 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,yi1.li@intel.com List-Unsubscribe-Post: List-Unsubscribe=One-Click List-Unsubscribe: X-Gm-Message-State: iOHD4VvDi7VxZK1a8YY3i50Rx1787277AA= Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @groups.io) X-ZM-MESSAGEID: 1702961428889100003 Content-Type: text/plain; charset="utf-8" Mantis: https://mantis.uefi.org/mantis/view.php?id=3D2025 To avoid messy parsing of the Depex section of a Capsule, it would be a lot easier for everyone involved if we preceded the Capsule Depex Section with a length declaration. It provides simple bounds checking to avoid having to parse the op-codes, but in the case of a malformed depex being parsed, avoid other issues which can be messy. REF: UEFI spec 2.10 Table 23.4 Signed-off-by: Yi Li Cc: Michael D Kinney Cc: Liming Gao Cc: Zhiguang Liu --- MdePkg/Include/Protocol/FirmwareManagement.h | 29 ++++++++++---------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/MdePkg/Include/Protocol/FirmwareManagement.h b/MdePkg/Include/= Protocol/FirmwareManagement.h index f37067df3455..e535bb697d88 100644 --- a/MdePkg/Include/Protocol/FirmwareManagement.h +++ b/MdePkg/Include/Protocol/FirmwareManagement.h @@ -30,20 +30,21 @@ typedef struct _EFI_FIRMWARE_MANAGEMENT_PROTOCOL EFI_FI= RMWARE_MANAGEMENT_PROTOCO /// /// Dependency Expression Opcode /// -#define EFI_FMP_DEP_PUSH_GUID 0x00 -#define EFI_FMP_DEP_PUSH_VERSION 0x01 -#define EFI_FMP_DEP_VERSION_STR 0x02 -#define EFI_FMP_DEP_AND 0x03 -#define EFI_FMP_DEP_OR 0x04 -#define EFI_FMP_DEP_NOT 0x05 -#define EFI_FMP_DEP_TRUE 0x06 -#define EFI_FMP_DEP_FALSE 0x07 -#define EFI_FMP_DEP_EQ 0x08 -#define EFI_FMP_DEP_GT 0x09 -#define EFI_FMP_DEP_GTE 0x0A -#define EFI_FMP_DEP_LT 0x0B -#define EFI_FMP_DEP_LTE 0x0C -#define EFI_FMP_DEP_END 0x0D +#define EFI_FMP_DEP_PUSH_GUID 0x00 +#define EFI_FMP_DEP_PUSH_VERSION 0x01 +#define EFI_FMP_DEP_VERSION_STR 0x02 +#define EFI_FMP_DEP_AND 0x03 +#define EFI_FMP_DEP_OR 0x04 +#define EFI_FMP_DEP_NOT 0x05 +#define EFI_FMP_DEP_TRUE 0x06 +#define EFI_FMP_DEP_FALSE 0x07 +#define EFI_FMP_DEP_EQ 0x08 +#define EFI_FMP_DEP_GT 0x09 +#define EFI_FMP_DEP_GTE 0x0A +#define EFI_FMP_DEP_LT 0x0B +#define EFI_FMP_DEP_LTE 0x0C +#define EFI_FMP_DEP_END 0x0D +#define EFI_FMP_DEP_DECLARE_LENGTH 0x0E =20 /// /// Image Attribute - Dependency --=20 2.42.0.windows.2 -=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 (#112687): https://edk2.groups.io/g/devel/message/112687 Mute This Topic: https://groups.io/mt/103257908/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 Tue May 14 00:17:20 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+112688+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+112688+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1702961430; cv=none; d=zohomail.com; s=zohoarc; b=CMHFRkpMICE7nZRMhmaC6jzAIXQues0qKUivuu9k2v+2VA0UD2rj6mPNhOrInfBCfH6w2md86wBmNQqwcZ04AUpOV/BmUm309W57HQi12YbTKjzmvtAdSrHl1nDB3AP4Sb1p8ndblMEQYkekmJDBTRCx0kD/OJpalHLjth6IuKg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1702961430; h=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=TbN5wZgR5XeIn4xFjcvo6aMucv+1YxGDci6exYHS3Dg=; b=JRMNTh5R4svDc7NxHUfYowbtO3dTbr7RkQUoR74+VSMKETOcl86eFgcjUit214C+I7u0u2ZTtc6nNMlNTekLjw7K9OEcxIZOs8vegHySgYflrJFLgiIuhx8tRindf4qubC3O14jZkq8LWMFVVXpAzwd8q2ahckakSuq4lKQy0pg= 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+112688+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 1702961430131174.84817021993194; Mon, 18 Dec 2023 20:50:30 -0800 (PST) Return-Path: DKIM-Signature: a=rsa-sha256; bh=8kY9cwq9NH79hg44hQ8dlt1CoZpy/UQDqx7Aucuu/Ns=; 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; s=20140610; t=1702961429; v=1; b=jToRvng90lxJsV803kKGm9qH2mwYHjIpflb41dVHRE1qaHanGH3u6jxV5LuIvI7iBSOvZC+n CgLXg+tyvU8Vhg94QthPT8IQjCfnOtJmoAulgpTl83oLejwbRmVTcOexoaVXbg5WruouXaBwdjt LCFON72DjYOz+zPTPabL32Y0= X-Received: by 127.0.0.2 with SMTP id Ywb8YY1788612xjm2MIH0i3K; Mon, 18 Dec 2023 20:50:29 -0800 X-Received: from mgamail.intel.com (mgamail.intel.com [192.55.52.43]) by mx.groups.io with SMTP id smtpd.web11.5762.1702961425788074891 for ; Mon, 18 Dec 2023 20:50:29 -0800 X-IronPort-AV: E=McAfee;i="6600,9927,10928"; a="481798137" X-IronPort-AV: E=Sophos;i="6.04,287,1695711600"; d="scan'208";a="481798137" X-Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Dec 2023 20:50:29 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10928"; a="841752586" X-IronPort-AV: E=Sophos;i="6.04,287,1695711600"; d="scan'208";a="841752586" X-Received: from liyi4-desktop.ccr.corp.intel.com ([10.239.153.29]) by fmsmga008-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Dec 2023 20:50:27 -0800 From: "Li, Yi" To: devel@edk2.groups.io Cc: Yi Li , Liming Gao , Michael D Kinney , Wei6 Xu Subject: [edk2-devel] [PATCH 2/2] FmpDevicePkg: Add DECLARE_LENGTH opcode of dependency expression Date: Tue, 19 Dec 2023 12:50:13 +0800 Message-ID: <20231219045013.1425-3-yi1.li@intel.com> In-Reply-To: <20231219045013.1425-1-yi1.li@intel.com> References: <20231219045013.1425-1-yi1.li@intel.com> MIME-Version: 1.0 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,yi1.li@intel.com List-Unsubscribe-Post: List-Unsubscribe=One-Click List-Unsubscribe: X-Gm-Message-State: gMsgQQBY1OzOLjkH14MV4F1rx1787277AA= Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @groups.io) X-ZM-MESSAGEID: 1702961430976100009 Content-Type: text/plain; charset="utf-8" Mantis: https://mantis.uefi.org/mantis/view.php?id=3D2025 To avoid messy parsing of the Depex section of a Capsule, it would be a lot easier for everyone involved if we preceded the Capsule Depex Section with a length declaration. It provides simple bounds checking to avoid having to parse the op-codes, but in the case of a malformed depex being parsed, avoid other issues which can be messy. REF: UEFI spec 2.10 Table 23.4 Signed-off-by: Yi Li Cc: Liming Gao Cc: Michael D Kinney Cc: Wei6 Xu --- .../FmpDependencyLib/FmpDependencyLib.c | 35 ++++++++ .../PrivateInclude/FmpLastAttemptStatus.h | 3 + .../EvaluateDependencyUnitTest.c | 84 ++++++++++++++++--- 3 files changed, 110 insertions(+), 12 deletions(-) diff --git a/FmpDevicePkg/Library/FmpDependencyLib/FmpDependencyLib.c b/Fmp= DevicePkg/Library/FmpDependencyLib/FmpDependencyLib.c index 76a1ee3f40db..50662e74e065 100644 --- a/FmpDevicePkg/Library/FmpDependencyLib/FmpDependencyLib.c +++ b/FmpDevicePkg/Library/FmpDependencyLib/FmpDependencyLib.c @@ -234,6 +234,7 @@ EvaluateDependency ( GUID ImageTypeId; UINT32 Version; UINT32 LocalLastAttemptStatus; + UINT32 DeclaredLength; =20 LocalLastAttemptStatus =3D LAST_ATTEMPT_STATUS_SUCCESS; =20 @@ -489,6 +490,37 @@ EvaluateDependency ( } =20 return Element1.Value.Boolean; + case EFI_FMP_DEP_DECLARE_LENGTH: + if (Iterator + sizeof (UINT32) >=3D (UINT8 *)Dependencies->Depende= ncies + DependenciesSize ) { + DEBUG ((DEBUG_ERROR, "EvaluateDependency: DECLARE_LENGTH extends= beyond end of dependency expression!\n")); + LocalLastAttemptStatus =3D LAST_ATTEMPT_STATUS_DEPENDENCY_LIB_ER= ROR_DECLARE_LENGTH_BEYOND_DEPEX; + goto Error; + } + + // + // This opcode must be the first one in a dependency expression. + // + if (Iterator !=3D Dependencies->Dependencies) { + DEBUG ((DEBUG_ERROR, "EvaluateDependency: DECLARE_LENGTH is not = the first opcode!\n")); + LocalLastAttemptStatus =3D LAST_ATTEMPT_STATUS_DEPENDENCY_LIB_ER= ROR_DECLARE_LENGTH_NOT_FIRST_OPCODE; + goto Error; + } + + DeclaredLength =3D *(UINT32 *)(Iterator + 1); + if (DeclaredLength !=3D DependenciesSize) { + DEBUG ((DEBUG_ERROR, "EvaluateDependency: DECLARE_LENGTH is not = equal to length of dependency expression!\n")); + LocalLastAttemptStatus =3D LAST_ATTEMPT_STATUS_DEPENDENCY_LIB_ER= ROR_DECLARE_LENGTH_INCORRECT; + goto Error; + } + + Status =3D Push (DeclaredLength, VersionType); + if (EFI_ERROR (Status)) { + LocalLastAttemptStatus =3D LAST_ATTEMPT_STATUS_DEPENDENCY_LIB_ER= ROR_PUSH_FAILURE; + goto Error; + } + + Iterator =3D Iterator + sizeof (UINT32); + break; default: DEBUG ((DEBUG_ERROR, "EvaluateDependency: Unknown Opcode - %02x!\n= ", *Iterator)); LocalLastAttemptStatus =3D LAST_ATTEMPT_STATUS_DEPENDENCY_LIB_ERRO= R_UNKNOWN_OPCODE; @@ -574,6 +606,9 @@ ValidateDependency ( } =20 return TRUE; + case EFI_FMP_DEP_DECLARE_LENGTH: + Depex +=3D sizeof (UINT32) + 1; + break; default: return FALSE; } diff --git a/FmpDevicePkg/PrivateInclude/FmpLastAttemptStatus.h b/FmpDevice= Pkg/PrivateInclude/FmpLastAttemptStatus.h index 39a55dd2c643..aaa3334909c8 100644 --- a/FmpDevicePkg/PrivateInclude/FmpLastAttemptStatus.h +++ b/FmpDevicePkg/PrivateInclude/FmpLastAttemptStatus.h @@ -66,6 +66,9 @@ enum LAST_ATTEMPT_STATUS_EXPANDED_ERROR_LIST { LAST_ATTEMPT_STATUS_DEPENDENCY_LIB_ERROR_FMP_NOT_FOUND, LAST_ATTEMPT_STATUS_DEPENDENCY_LIB_ERROR_PUSH_FAILURE, LAST_ATTEMPT_STATUS_DEPENDENCY_LIB_ERROR_POP_FAILURE, + LAST_ATTEMPT_STATUS_DEPENDENCY_LIB_ERROR_DECLARE_LENGTH_NOT_FIRST_OPCODE, + LAST_ATTEMPT_STATUS_DEPENDENCY_LIB_ERROR_DECLARE_LENGTH_BEYOND_DEPEX, + LAST_ATTEMPT_STATUS_DEPENDENCY_LIB_ERROR_DECLARE_LENGTH_INCORRECT, =20 /// /// Last attempt status codes used in FmpDependencyCheckLib diff --git a/FmpDevicePkg/Test/UnitTest/Library/FmpDependencyLib/EvaluateDe= pendencyUnitTest.c b/FmpDevicePkg/Test/UnitTest/Library/FmpDependencyLib/Ev= aluateDependencyUnitTest.c index 0edb7f67306f..352887af2c5e 100644 --- a/FmpDevicePkg/Test/UnitTest/Library/FmpDependencyLib/EvaluateDependenc= yUnitTest.c +++ b/FmpDevicePkg/Test/UnitTest/Library/FmpDependencyLib/EvaluateDependenc= yUnitTest.c @@ -125,19 +125,75 @@ static UINT8 mExpression11[] =3D { EFI_FMP_DEP_END }; =20 +// Valid Dependency Expression 7: With correct declared length +static UINT8 mExpression12[] =3D { + EFI_FMP_DEP_DECLARE_LENGTH, 0x35, 0x00, 0x00, 0x00, + EFI_FMP_DEP_PUSH_VERSION, 0x01, 0x00, 0x00, 0x00, + EFI_FMP_DEP_PUSH_GUID, 0xFA, 0x4D, 0x14, 0x97,0x8E, 0xEB, 0x4D, 0x= D1, 0x8B, 0x4D, 0x39, 0x88, 0x24, 0x96, 0x56, 0x42, + EFI_FMP_DEP_GT, + EFI_FMP_DEP_PUSH_VERSION, 0x03, 0x00, 0x00, 0x00, + EFI_FMP_DEP_PUSH_GUID, 0x70, 0x73, 0x2A, 0xA4,0x3A, 0x43, 0x4D, 0x= 68, 0x9A, 0xA1, 0xDE, 0x62, 0x23, 0x30, 0x6C, 0xF3, + EFI_FMP_DEP_GTE, + EFI_FMP_DEP_AND, + EFI_FMP_DEP_END +}; + +// Valid Dependency Expression 7: With longer declared length +static UINT8 mExpression13[] =3D { + EFI_FMP_DEP_DECLARE_LENGTH, 0x3B, 0x00, 0x00, 0x00, + EFI_FMP_DEP_PUSH_VERSION, 0x01, 0x00, 0x00, 0x00, + EFI_FMP_DEP_PUSH_GUID, 0xFA, 0x4D, 0x14, 0x97,0x8E, 0xEB, 0x4D, 0x= D1, 0x8B, 0x4D, 0x39, 0x88, 0x24, 0x96, 0x56, 0x42, + EFI_FMP_DEP_GT, + EFI_FMP_DEP_PUSH_VERSION, 0x03, 0x00, 0x00, 0x00, + EFI_FMP_DEP_PUSH_GUID, 0x70, 0x73, 0x2A, 0xA4,0x3A, 0x43, 0x4D, 0x= 68, 0x9A, 0xA1, 0xDE, 0x62, 0x23, 0x30, 0x6C, 0xF3, + EFI_FMP_DEP_GTE, + EFI_FMP_DEP_AND, + EFI_FMP_DEP_END +}; + +// Valid Dependency Expression 7: With shorter declared length +static UINT8 mExpression14[] =3D { + EFI_FMP_DEP_DECLARE_LENGTH, 0x1B, 0x00, 0x00, 0x00, + EFI_FMP_DEP_PUSH_VERSION, 0x01, 0x00, 0x00, 0x00, + EFI_FMP_DEP_PUSH_GUID, 0xFA, 0x4D, 0x14, 0x97,0x8E, 0xEB, 0x4D, 0x= D1, 0x8B, 0x4D, 0x39, 0x88, 0x24, 0x96, 0x56, 0x42, + EFI_FMP_DEP_GT, + EFI_FMP_DEP_PUSH_VERSION, 0x03, 0x00, 0x00, 0x00, + EFI_FMP_DEP_PUSH_GUID, 0x70, 0x73, 0x2A, 0xA4,0x3A, 0x43, 0x4D, 0x= 68, 0x9A, 0xA1, 0xDE, 0x62, 0x23, 0x30, 0x6C, 0xF3, + EFI_FMP_DEP_GTE, + EFI_FMP_DEP_AND, + EFI_FMP_DEP_END +}; + +// Valid Dependency Expression 7: DECLARE_LENGTH opcode is not first one +static UINT8 mExpression15[] =3D { + EFI_FMP_DEP_PUSH_VERSION, 0x01, 0x00, 0x00, 0x00, + EFI_FMP_DEP_PUSH_GUID, 0xFA, 0x4D, 0x14, 0x97,0x8E, 0xEB, 0x4D, 0x= D1, 0x8B, 0x4D, 0x39, 0x88, 0x24, 0x96, 0x56, 0x42, + EFI_FMP_DEP_GT, + EFI_FMP_DEP_DECLARE_LENGTH, 0x35, 0x00, 0x00, 0x00, + EFI_FMP_DEP_PUSH_VERSION, 0x03, 0x00, 0x00, 0x00, + EFI_FMP_DEP_PUSH_GUID, 0x70, 0x73, 0x2A, 0xA4,0x3A, 0x43, 0x4D, 0x= 68, 0x9A, 0xA1, 0xDE, 0x62, 0x23, 0x30, 0x6C, 0xF3, + EFI_FMP_DEP_GTE, + EFI_FMP_DEP_AND, + EFI_FMP_DEP_END +}; + // ------------------------------------------------Test Depex------Depex S= ize----------------Expected Result -static BASIC_TEST_CONTEXT mBasicTestTrue1 =3D { mExpression1, sizeof (= mExpression1), TRUE }; -static BASIC_TEST_CONTEXT mBasicTestTrue2 =3D { mExpression2, sizeof (= mExpression2), TRUE }; -static BASIC_TEST_CONTEXT mBasicTestFalse1 =3D { mExpression3, sizeof (= mExpression3), FALSE }; -static BASIC_TEST_CONTEXT mBasicTestFalse2 =3D { mExpression4, sizeof (= mExpression4), FALSE }; -static BASIC_TEST_CONTEXT mBasicTestInvalid1 =3D { mExpression1, sizeof (= mExpression1) - 1, FALSE }; -static BASIC_TEST_CONTEXT mBasicTestInvalid2 =3D { mExpression5, sizeof (= mExpression5), FALSE }; -static BASIC_TEST_CONTEXT mBasicTestInvalid3 =3D { mExpression6, sizeof (= mExpression6), FALSE }; -static BASIC_TEST_CONTEXT mBasicTestInvalid4 =3D { mExpression7, sizeof (= mExpression7), FALSE }; -static BASIC_TEST_CONTEXT mBasicTestInvalid5 =3D { mExpression8, sizeof (= mExpression8), FALSE }; -static BASIC_TEST_CONTEXT mBasicTestInvalid6 =3D { mExpression9, sizeof (= mExpression9), FALSE }; -static BASIC_TEST_CONTEXT mBasicTestInvalid7 =3D { mExpression10, sizeof = (mExpression10), FALSE }; -static BASIC_TEST_CONTEXT mBasicTestInvalid8 =3D { mExpression11, sizeof = (mExpression11), FALSE }; +static BASIC_TEST_CONTEXT mBasicTestTrue1 =3D { mExpression1, sizeof = (mExpression1), TRUE }; +static BASIC_TEST_CONTEXT mBasicTestTrue2 =3D { mExpression2, sizeof = (mExpression2), TRUE }; +static BASIC_TEST_CONTEXT mBasicTestFalse1 =3D { mExpression3, sizeof = (mExpression3), FALSE }; +static BASIC_TEST_CONTEXT mBasicTestFalse2 =3D { mExpression4, sizeof = (mExpression4), FALSE }; +static BASIC_TEST_CONTEXT mBasicTestInvalid1 =3D { mExpression1, sizeof = (mExpression1) - 1, FALSE }; +static BASIC_TEST_CONTEXT mBasicTestInvalid2 =3D { mExpression5, sizeof = (mExpression5), FALSE }; +static BASIC_TEST_CONTEXT mBasicTestInvalid3 =3D { mExpression6, sizeof = (mExpression6), FALSE }; +static BASIC_TEST_CONTEXT mBasicTestInvalid4 =3D { mExpression7, sizeof = (mExpression7), FALSE }; +static BASIC_TEST_CONTEXT mBasicTestInvalid5 =3D { mExpression8, sizeof = (mExpression8), FALSE }; +static BASIC_TEST_CONTEXT mBasicTestInvalid6 =3D { mExpression9, sizeof = (mExpression9), FALSE }; +static BASIC_TEST_CONTEXT mBasicTestInvalid7 =3D { mExpression10, sizeof= (mExpression10), FALSE }; +static BASIC_TEST_CONTEXT mBasicTestInvalid8 =3D { mExpression11, sizeof= (mExpression11), FALSE }; +static BASIC_TEST_CONTEXT mBasicTestValid1 =3D { mExpression12, sizeof= (mExpression12), TRUE }; +static BASIC_TEST_CONTEXT mBasicTestInvalid9 =3D { mExpression13, sizeof= (mExpression13), FALSE }; +static BASIC_TEST_CONTEXT mBasicTestInvalid10 =3D { mExpression14, sizeof= (mExpression14), FALSE }; +static BASIC_TEST_CONTEXT mBasicTestInvalid11 =3D { mExpression15, sizeof= (mExpression15), FALSE }; =20 /** Unit test for EvaluateDependency() API of the FmpDependencyLib. @@ -233,6 +289,10 @@ UnitTestingEntry ( AddTestCase (DepexEvalTests, "Error: Operand and operator mismatch", "Te= st10", EvaluateDependencyTest, NULL, NULL, &mBasicTestInvalid6); AddTestCase (DepexEvalTests, "Error: GUID is NOT FOUND", "Test11", Evalu= ateDependencyTest, NULL, NULL, &mBasicTestInvalid7); AddTestCase (DepexEvalTests, "Error: Stack Underflow", "Test12", Evaluat= eDependencyTest, NULL, NULL, &mBasicTestInvalid8); + AddTestCase (DepexEvalTests, "Evaluate to True - 3", "Test13", EvaluateD= ependencyTest, NULL, NULL, &mBasicTestValid1); + AddTestCase (DepexEvalTests, "Error: Declared length too long", "Test14"= , EvaluateDependencyTest, NULL, NULL, &mBasicTestInvalid9); + AddTestCase (DepexEvalTests, "Error: Declared length too short", "Test15= ", EvaluateDependencyTest, NULL, NULL, &mBasicTestInvalid10); + AddTestCase (DepexEvalTests, "Error: DECLARE_LENGTH is not first opcode"= , "Test16", EvaluateDependencyTest, NULL, NULL, &mBasicTestInvalid11); =20 // // Execute the tests. --=20 2.42.0.windows.2 -=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 (#112688): https://edk2.groups.io/g/devel/message/112688 Mute This Topic: https://groups.io/mt/103257910/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-