From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by mx.groups.io with SMTP id smtpd.web11.5331.1642052102560547409 for ; Wed, 12 Jan 2022 21:35:03 -0800 Authentication-Results: mx.groups.io; dkim=fail reason="unable to parse pub key" header.i=@intel.com header.s=intel header.b=Q8ioPOoQ; spf=pass (domain: intel.com, ip: 192.55.52.120, mailfrom: dandan.bi@intel.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1642052102; x=1673588102; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=+lNEOEvfB9PfBL8TornA1CeEfUjAZzI9xyArkltHxtw=; b=Q8ioPOoQ2caD12OyWoSolc+DULWNMO4pIPMIWWCDyQxfBg0UKU3hcM7B dLgsomtsRkpEqqeXroCjIOmbtRDUlB+6fzJUTnQ36QAvWr6Q49FG/I0dO 8Uw9irWWpDvZuqPC+dD3B3++vTUcpQllfGBClxaZ5CVQkBGz6GGJV0Z47 KlZ3haAsWC/NGacNuBoM/J3sAk4JucyvLZ9Y7QP7VguxIrjjnU0CAJR7V AflSK2dEA7lVbyrMinnYWiPDofuX8kmhpcHgReiv8vqByWgEKLh535Uu9 gqPg7Uodgc+ELNfOXamyDXu2iUdZsPQ3JdZWnWMIDqV9zIrNWsAz9pV7J g==; X-IronPort-AV: E=McAfee;i="6200,9189,10225"; a="242753379" X-IronPort-AV: E=Sophos;i="5.88,284,1635231600"; d="scan'208";a="242753379" Received: from orsmga007.jf.intel.com ([10.7.209.58]) by fmsmga104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 Jan 2022 21:35:01 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.88,284,1635231600"; d="scan'208";a="515794018" Received: from fmsmsx602.amr.corp.intel.com ([10.18.126.82]) by orsmga007.jf.intel.com with ESMTP; 12 Jan 2022 21:35:01 -0800 Received: from fmsmsx602.amr.corp.intel.com (10.18.126.82) by fmsmsx602.amr.corp.intel.com (10.18.126.82) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.20; Wed, 12 Jan 2022 21:35:01 -0800 Received: from fmsedg601.ED.cps.intel.com (10.1.192.135) by fmsmsx602.amr.corp.intel.com (10.18.126.82) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.20 via Frontend Transport; Wed, 12 Jan 2022 21:35:01 -0800 Received: from NAM11-CO1-obe.outbound.protection.outlook.com (104.47.56.170) by edgegateway.intel.com (192.55.55.70) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2308.20; Wed, 12 Jan 2022 21:35:01 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ZqGfoCqYXTWhU4RYnDJYx/U3nNfZS+IMzd5BAWsK4x22JTU61ZG+9Hcia4G/8TT2jVjm+YCZLzJbAJa4K3+9lofBtG5CvH8tI+bcTrCNL0gjA4Bjr5saYYvoB744R6EDP/ff5mIH+x054qIncr2azgLJsrA34KPecpM5XRJx0JIDSYvcebsaZjgTk4g14XIvZuouoaBDM4kTU8xtqe6vqvK4KKZ1FLvi+6AcS9TSCFE6MIS1blJuCXNlmBtDiM+f9wpvmx1Q2JhFwJWfpXz76O0mmuwJTKi2E+Up6Ipw0qwCDyjISnUAjV38VMXbZvg5JH2JE3TFX1jIzs+4BXtvpA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=UNkVMPbg20kN+RHE/oZ400H1Ny4qaQNiD2GnLkLZ+3s=; b=FP39SdLL7k+fAdXOh3NdztDYTu64LODCDTg/2udp0DuEFbjhRHUWcO4Qy6So/zIcTGnpK7ixyd0zeHGvb405HKo5tih0ntoqwzRBLU1LXfui2cZIibwspDBgDSS5IzWJbUUg7gECibXxWgrowgNJm71RZVDhal5oZO+5EHLmFNz55uc5TzGhPLUB9mXmvReTYOWcMuiIPyMBe5QdkRnp9NgOpm3NNH+bpwYj7N6DJeZis7l6ipGcGLobxgQ6n+WIFLwc9lpBPwuu+4u+sK9EiE9+KVdnPgutQL2gB4YCC5sTdDtWhbjDE/OHy9W452j+IdSvrRDM7pGOakJcF7l7rQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Received: from PH0PR11MB5928.namprd11.prod.outlook.com (2603:10b6:510:144::16) by PH0PR11MB4968.namprd11.prod.outlook.com (2603:10b6:510:39::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4867.9; Thu, 13 Jan 2022 05:35:00 +0000 Received: from PH0PR11MB5928.namprd11.prod.outlook.com ([fe80::b003:4016:91be:20d7]) by PH0PR11MB5928.namprd11.prod.outlook.com ([fe80::b003:4016:91be:20d7%5]) with mapi id 15.20.4867.007; Thu, 13 Jan 2022 05:34:59 +0000 From: "Dandan Bi" To: "Huang, Long1" , "devel@edk2.groups.io" CC: "Feng, Bob C" , "Gao, Liming" , "Chen, Lin Z" , "Li, Zhuangzhi" Subject: Re: [PATCH] MdeModulePkg/HiiDatabaseDxe: Add Support for authenticated variable Thread-Topic: [PATCH] MdeModulePkg/HiiDatabaseDxe: Add Support for authenticated variable Thread-Index: AQHYB5L5xav2d7GRL0WrI42fM2OQUaxgbtbQ Date: Thu, 13 Jan 2022 05:34:59 +0000 Message-ID: References: <802446c5bddb6e7de746d733c68d92c0e09e5ca8.1642007174.git.long1.huang@intel.com> In-Reply-To: <802446c5bddb6e7de746d733c68d92c0e09e5ca8.1642007174.git.long1.huang@intel.com> Accept-Language: zh-CN, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: d19a4eea-fd67-4ea2-b878-08d9d65670e9 x-ms-traffictypediagnostic: PH0PR11MB4968:EE_ x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:8273; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 7iJSqreHMJtHl1QIC5GN/bWwuOR2bQQ4oDKUo5UQ/fnqj21YPzX3aBHYVg01YfCjR3R4WBjUDvGNCF2fPgteWAbT9dh/v75931k96GiKIfAIJKj1rQkObAak7zK5f/V7lpuRDdfCJ2flRstakZ670Q2m2s0+waDcQ6avhkpom0CqfqiwBBAevKa3XNQFJUBVxty5drWya8kCN4nWBJToxYKMdjBtZop5nSTwE6j0Lou2T97RH3oSxUTgOhGiXCLgQsVtxky/BkBe8xkAjEYHRpqzg1qoS8mTdcXBoHo+pUd6uW6o9KtRNh5HVnmeVR08Q3aW8hj7zwSV8+eprfbSHAa0S16HGTxLEPHj8jv0BV1+iO1TSPyKbKSkYRUUVH/PcCvO+bWR0byS2Yl7g4C+g/hLBDlHkieWwCjRh6Cd0tcGj8/II0b7OJ8rC7tWl9/xDaBQXqOEixwApN5l1tAOIPu9bLCMwumwaPLWI3kJ4ltpJ4v3ojv8lgPPQ1t4vZOqxpsZdGF5kqScRmaa9du8le+xRzsN8Jyz+ervBzwZGkA+ymd4AGeRO5G6eLZWLSI/8S73JK/jlPFpHCvZ3ty3OzKi2uYO0Omd0dpyfkR6XpoU1w4RmCSnnIw3kKvO62dRJVdccU31j8/mI6vXya/UYb7bWtVMxGhfgPnudXp7nzSKhD9PjuOWeparXuv2oZgnUvJvg2zwqfyEbRJJ7JHV9L3FR6KU7zIMt+M+fKO50MPGuO3cPqRk1Xf3MoDNCb6mWgzQ8u4XDAVgYvN4V46fgOJTzJbNmSKgYYaVCR1LwvE= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH0PR11MB5928.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(366004)(107886003)(52536014)(26005)(6506007)(122000001)(82960400001)(186003)(83380400001)(86362001)(8936002)(53546011)(9686003)(316002)(7696005)(71200400001)(66946007)(66556008)(38100700002)(76116006)(5660300002)(508600001)(8676002)(2906002)(33656002)(66446008)(66476007)(4326008)(38070700005)(54906003)(110136005)(55016003)(64756008);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?x2Xs65ibjBKKVFqK5BseNEhCYhhB3pA/iUibFqDGYFLGL7THGm4pA3CQAPSV?= =?us-ascii?Q?UfC+IG+NTip7M2twHA3YCkRM+Qv+JRVqOXFeJhqpNYgde/pvoyl02JsgGd4V?= =?us-ascii?Q?O0/6jdUOcp0CxmZ947asZqL6W5TMjC6ItpVKZhG05GDjKLjGG2gME5FCWJhN?= =?us-ascii?Q?OE5Di59h8am0pjE5nG9pOisgLzyP0wPzqTl43c/XZmLKZXukVPHK1b+wKlMp?= =?us-ascii?Q?FAyWVfSTFjc7cgr5Fb1GrNc/KStz4QftFgI11/GT9TwN64VBjnNo/vxabYPC?= =?us-ascii?Q?4+n5CkY3/63hnNMUXj9Uf1TebC6qnkXvy9DRlVXKQTB2JhxCeKebeQPDf+2M?= =?us-ascii?Q?iyHd1HKzTvEFm6UZYUn8t/lx5pmZVpMmgcmtGbq0DK/C8xz2nKTaSlzwfXCo?= =?us-ascii?Q?L0D6fppae+qghX+A/7TI0GMpLRMOHb43g9A7jrqGKB8VQln6nJ8JZdQx4VGT?= =?us-ascii?Q?/83pn3sF5TGKsJItIaYdkhUGpxfqkydNQ3tK60kksrNIs49ouKifauF/SVWD?= =?us-ascii?Q?rWaa5SSoCZ2acPguJQyhQuHVoi6Cei6zzhIMy4f2hAIuuyN2u3t+eEibhHHN?= =?us-ascii?Q?1WVsk6+3CTzXLvxCO6tn0mcWppaMtGt8L4XuLV14kADJbNU2VQxlfUTLsvGZ?= =?us-ascii?Q?ShRg+9shdHhybXMuzpvB+/BRq1VkwlXTNLH5qpYLPUGj0C9lpL+0TZ9eM9Fx?= =?us-ascii?Q?eWBXP4kAwG8SvWU4bYxOtqTZnzGO3HHWQbJ29G0DUDjbl2Ay79hWGzdg9nT0?= =?us-ascii?Q?Kx+tCVcALGXqrpMmGJiVmsljW9NX8mFJoLdF86PQFaBZg8dUr5cS1vO3g5gG?= =?us-ascii?Q?BxlO9C+UwDVjmLOpjxZSt+BMM7rrYQIV4dqOGi7lkn4siaw94tIoMfwsKfm4?= =?us-ascii?Q?Tka05xYw58T4lsFSOYrESsYlCbs8j3SkRoArmeXKWnfCw5eNi5G5J8QkrtNC?= =?us-ascii?Q?w3MZ8wVy/Qn+l1+1FCknEbzsY/wuJs1p6Lxdd+X4IwkHCz+mlRZ+KKm77t30?= =?us-ascii?Q?54RVjBx/z98W81UwuCZV4Egeja3Ye673wBoxWvZ7BtLAdQPSIK8Ug7mXyXhR?= =?us-ascii?Q?cnJiSYnIPZgiOYLcyDxIRMoKVsyzR3Q6xh/kdyvU/gH8B2Ye0NnmH8Rc7Qql?= =?us-ascii?Q?EtqtcJn6Q9NVnzMPovf7LI/Zp0Pk4Cdx9WXjO6Ire6jVmqlXg7zE4TslYt2J?= =?us-ascii?Q?kMf8y3kiZAE751cBAJibkmjb0qN44y3z+Ye66mhtHILP1LQ99XvvIKy3ouBD?= =?us-ascii?Q?Eq32wqGYeb64aNGrSC/aKrT/V/R9qiMO3FyHgFqlJwzOJ5AMsNLn5qfZU7Gh?= =?us-ascii?Q?lOTR4bdptJSjOm3YUOnexRziHvOIFfjHcEZHAbo7hokzvev6LW/syhJdrDL4?= =?us-ascii?Q?yKHX6tkI+8SZyTfZpyEZUdU0n82mFzmQbgHIzScPUIHg08q0RWhx0NqYa/MT?= =?us-ascii?Q?RV/y9/24kMboBfIg5iXG6CeIfsAe1WGQXSNG0darnQXhLyPrSpQxdJ8W8ybt?= =?us-ascii?Q?G0qJuDf4e+ybeRi3Xv2gDa/nNtoLSHPSqrri8It2Cb77w+LjJk1OCEFOCf2T?= =?us-ascii?Q?Ft4CWRs8i5u0VwljVSbzMfEkKOXqLWOYYSrOWvzHRMPltyFT/1AxrOMP0goo?= =?us-ascii?Q?hw=3D=3D?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PH0PR11MB5928.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: d19a4eea-fd67-4ea2-b878-08d9d65670e9 X-MS-Exchange-CrossTenant-originalarrivaltime: 13 Jan 2022 05:34:59.8282 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: m0mYlvWiphnazmHtAMcrxRo7yaox4zDOu5ZnSdhNDvScnLSNwScmJip/ou2TRzOz4UAgE/Gs7FjjmAhnrYb7Iw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR11MB4968 Return-Path: dandan.bi@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable The change is ok to me. Reviewed-by: Dandan Bi Hi Liming, Could you also help review it? Thanks, Dandan > -----Original Message----- > From: Huang, Long1 > Sent: Thursday, January 13, 2022 1:06 AM > To: devel@edk2.groups.io > Cc: Huang, Long1 ; Feng, Bob C > ; Gao, Liming ; Bi, > Dandan ; Chen, Lin Z ; Li, > Zhuangzhi > Subject: [PATCH] MdeModulePkg/HiiDatabaseDxe: Add Support for > authenticated variable >=20 > REF:https://bugzilla.tianocore.org/show_bug.cgi?id=3D3796 >=20 > Database.c: > 1. Replace PcdGetExPtr with PcdGetExPtr. > 2. Add FindAuthVariableData function to parse authenticated > variable type for getting a correct default value in > PcdNvStoreDefaultValueBuffer. >=20 > Signed-off-by: Huang Long >=20 > Cc: Bob Feng > Cc: Liming Gao > Cc: Dandan Bi > Cc: Lin Z Chen > Cc: Zhuangzhi Li > --- > .../Universal/HiiDatabaseDxe/Database.c | 130 ++++++++++++++---- > .../HiiDatabaseDxe/HiiDatabaseDxe.inf | 3 + > 2 files changed, 105 insertions(+), 28 deletions(-) >=20 > diff --git a/MdeModulePkg/Universal/HiiDatabaseDxe/Database.c > b/MdeModulePkg/Universal/HiiDatabaseDxe/Database.c > index 0b09c24d52..c7a92d6aed 100644 > --- a/MdeModulePkg/Universal/HiiDatabaseDxe/Database.c > +++ b/MdeModulePkg/Universal/HiiDatabaseDxe/Database.c > @@ -603,6 +603,45 @@ FindVariableData ( > return NULL; >=20 > } >=20 >=20 >=20 > +/** >=20 > + Find the matched authenticated variable from the input variable storag= e. >=20 > + >=20 > + @param[in] VariableStorage Point to the variable storage header. >=20 > + @param[in] VarGuid A unique identifier for the variable. >=20 > + @param[in] VarAttribute The attributes bitmask for the variable. >=20 > + @param[in] VarName A Null-terminated ascii string that is the = name of > the variable. >=20 > + >=20 > + @return Pointer to the matched variable header or NULL if not found. >=20 > +**/ >=20 > +AUTHENTICATED_VARIABLE_HEADER * >=20 > +FindAuthVariableData ( >=20 > + IN VARIABLE_STORE_HEADER *VariableStorage, >=20 > + IN EFI_GUID *VarGuid, >=20 > + IN UINT32 VarAttribute, >=20 > + IN CHAR16 *VarName >=20 > + ) >=20 > +{ >=20 > + AUTHENTICATED_VARIABLE_HEADER *AuthVariableHeader; >=20 > + AUTHENTICATED_VARIABLE_HEADER *AuthVariableEnd; >=20 > + >=20 > + AuthVariableEnd =3D (AUTHENTICATED_VARIABLE_HEADER *)((UINT8 > *)VariableStorage + VariableStorage->Size); >=20 > + AuthVariableHeader =3D (AUTHENTICATED_VARIABLE_HEADER > *)(VariableStorage + 1); >=20 > + AuthVariableHeader =3D (AUTHENTICATED_VARIABLE_HEADER > *)HEADER_ALIGN (AuthVariableHeader); >=20 > + while (AuthVariableHeader < AuthVariableEnd) { >=20 > + if (CompareGuid (&AuthVariableHeader->VendorGuid, VarGuid) && >=20 > + (AuthVariableHeader->Attributes =3D=3D VarAttribute) && >=20 > + (StrCmp (VarName, (CHAR16 *)(AuthVariableHeader + 1)) =3D=3D 0)) >=20 > + { >=20 > + return AuthVariableHeader; >=20 > + } >=20 > + >=20 > + AuthVariableHeader =3D (AUTHENTICATED_VARIABLE_HEADER *)((UINT8 > *)AuthVariableHeader + sizeof (AUTHENTICATED_VARIABLE_HEADER) + > AuthVariableHeader->NameSize + AuthVariableHeader->DataSize); >=20 > + AuthVariableHeader =3D (AUTHENTICATED_VARIABLE_HEADER > *)HEADER_ALIGN (AuthVariableHeader); >=20 > + } >=20 > + >=20 > + return NULL; >=20 > +} >=20 > + >=20 > /** >=20 > Find question default value from PcdNvStoreDefaultValueBuffer >=20 >=20 >=20 > @@ -626,25 +665,29 @@ FindQuestionDefaultSetting ( > IN BOOLEAN BitFieldQuestion >=20 > ) >=20 > { >=20 > - VARIABLE_HEADER *VariableHeader; >=20 > - VARIABLE_STORE_HEADER *VariableStorage; >=20 > - LIST_ENTRY *Link; >=20 > - VARSTORAGE_DEFAULT_DATA *Entry; >=20 > - VARIABLE_STORE_HEADER *NvStoreBuffer; >=20 > - UINT8 *DataBuffer; >=20 > - UINT8 *BufferEnd; >=20 > - BOOLEAN IsFound; >=20 > - UINTN Index; >=20 > - UINT32 BufferValue; >=20 > - UINT32 BitFieldVal; >=20 > - UINTN BitOffset; >=20 > - UINTN ByteOffset; >=20 > - UINTN BitWidth; >=20 > - UINTN StartBit; >=20 > - UINTN EndBit; >=20 > - PCD_DEFAULT_DATA *DataHeader; >=20 > - PCD_DEFAULT_INFO *DefaultInfo; >=20 > - PCD_DATA_DELTA *DeltaData; >=20 > + VARIABLE_HEADER *VariableHeader; >=20 > + AUTHENTICATED_VARIABLE_HEADER *AuthVariableHeader; >=20 > + VARIABLE_STORE_HEADER *VariableStorage; >=20 > + LIST_ENTRY *Link; >=20 > + VARSTORAGE_DEFAULT_DATA *Entry; >=20 > + VARIABLE_STORE_HEADER *NvStoreBuffer; >=20 > + VOID *ValueSource; >=20 > + VOID *BitValueSource; >=20 > + UINT8 *DataBuffer; >=20 > + UINT8 *BufferEnd; >=20 > + BOOLEAN AuthFormat; >=20 > + BOOLEAN IsFound; >=20 > + UINTN Index; >=20 > + UINT32 BufferValue; >=20 > + UINT32 BitFieldVal; >=20 > + UINTN BitOffset; >=20 > + UINTN ByteOffset; >=20 > + UINTN BitWidth; >=20 > + UINTN StartBit; >=20 > + UINTN EndBit; >=20 > + PCD_DEFAULT_DATA *DataHeader; >=20 > + PCD_DEFAULT_INFO *DefaultInfo; >=20 > + PCD_DATA_DELTA *DeltaData; >=20 >=20 >=20 > if (gSkuId =3D=3D 0xFFFFFFFFFFFFFFFF) { >=20 > gSkuId =3D LibPcdGetSku (); >=20 > @@ -666,7 +709,7 @@ FindQuestionDefaultSetting ( > } >=20 >=20 >=20 > if (Link =3D=3D &gVarStorageList) { >=20 > - DataBuffer =3D (UINT8 *)PcdGetPtr (PcdNvStoreDefaultValueBu= ffer); >=20 > + DataBuffer =3D (UINT8 *)PcdGetExPtr > (&gEfiMdeModulePkgTokenSpaceGuid, PcdNvStoreDefaultValueBuffer); >=20 > gNvDefaultStoreSize =3D ((PCD_NV_STORE_DEFAULT_BUFFER_HEADER > *)DataBuffer)->Length; >=20 > // >=20 > // The first section data includes NV storage default setting. >=20 > @@ -750,12 +793,27 @@ FindQuestionDefaultSetting ( > return EFI_NOT_FOUND; >=20 > } >=20 >=20 >=20 > + // >=20 > + // Judge if the variable type is authenticated, default is false >=20 > + // >=20 > + AuthFormat =3D FALSE; >=20 > + if (CompareGuid (&VariableStorage->Signature, > &gEfiAuthenticatedVariableGuid)) { >=20 > + AuthFormat =3D TRUE; >=20 > + } >=20 > + >=20 > // >=20 > // Find the question default value from the variable storage >=20 > // >=20 > - VariableHeader =3D FindVariableData (VariableStorage, &EfiVarStore->Gu= id, > EfiVarStore->Attributes, (CHAR16 *)EfiVarStore->Name); >=20 > - if (VariableHeader =3D=3D NULL) { >=20 > - return EFI_NOT_FOUND; >=20 > + if(AuthFormat) { >=20 > + AuthVariableHeader =3D FindAuthVariableData (VariableStorage, > &EfiVarStore->Guid, EfiVarStore->Attributes, (CHAR16 *)EfiVarStore- > >Name); >=20 > + if (AuthVariableHeader =3D=3D NULL) { >=20 > + return EFI_NOT_FOUND; >=20 > + } >=20 > + } else { >=20 > + VariableHeader =3D FindVariableData (VariableStorage, &EfiVarStore->= Guid, > EfiVarStore->Attributes, (CHAR16 *)EfiVarStore->Name); >=20 > + if (VariableHeader =3D=3D NULL) { >=20 > + return EFI_NOT_FOUND; >=20 > + } >=20 > } >=20 >=20 >=20 > StartBit =3D 0; >=20 > @@ -770,8 +828,24 @@ FindQuestionDefaultSetting ( > Width =3D EndBit / 8 + 1; >=20 > } >=20 >=20 >=20 > - if (VariableHeader->DataSize < ByteOffset + Width) { >=20 > - return EFI_INVALID_PARAMETER; >=20 > + if (AuthFormat) { >=20 > + if (AuthVariableHeader->DataSize < ByteOffset + Width) { >=20 > + return EFI_INVALID_PARAMETER; >=20 > + } >=20 > + >=20 > + ValueSource =3D (UINT8 *)AuthVariableHeader + sizeof > (AUTHENTICATED_VARIABLE_HEADER) + AuthVariableHeader->NameSize + > IfrQuestionHdr->VarStoreInfo.VarOffset; >=20 > + if (BitFieldQuestion) { >=20 > + BitValueSource =3D (UINT8 *)AuthVariableHeader + sizeof > (AUTHENTICATED_VARIABLE_HEADER) + AuthVariableHeader->NameSize + > ByteOffset; >=20 > + } >=20 > + } else { >=20 > + if (VariableHeader->DataSize < ByteOffset + Width) { >=20 > + return EFI_INVALID_PARAMETER; >=20 > + } >=20 > + >=20 > + ValueSource =3D (UINT8 *)VariableHeader + sizeof (VARIABLE_HEADER) + > VariableHeader->NameSize + IfrQuestionHdr->VarStoreInfo.VarOffset; >=20 > + if (BitFieldQuestion) { >=20 > + BitValueSource =3D (UINT8 *)VariableHeader + sizeof (VARIABLE_HEAD= ER) > + VariableHeader->NameSize + ByteOffset; >=20 > + } >=20 > } >=20 >=20 >=20 > // >=20 > @@ -779,11 +853,11 @@ FindQuestionDefaultSetting ( > // >=20 > if (ValueBuffer !=3D NULL) { >=20 > if (BitFieldQuestion) { >=20 > - CopyMem (&BufferValue, (UINT8 *)VariableHeader + sizeof > (VARIABLE_HEADER) + VariableHeader->NameSize + ByteOffset, Width); >=20 > + CopyMem (&BufferValue, BitValueSource, Width); >=20 > BitFieldVal =3D BitFieldRead32 (BufferValue, StartBit, EndBit); >=20 > CopyMem (ValueBuffer, &BitFieldVal, Width); >=20 > } else { >=20 > - CopyMem (ValueBuffer, (UINT8 *)VariableHeader + sizeof > (VARIABLE_HEADER) + VariableHeader->NameSize + IfrQuestionHdr- > >VarStoreInfo.VarOffset, Width); >=20 > + CopyMem (ValueBuffer, ValueSource, Width); >=20 > } >=20 > } >=20 >=20 >=20 > @@ -832,7 +906,7 @@ UpdateDefaultSettingInFormPackage ( > // If no default setting, do nothing >=20 > // >=20 > if (gNvDefaultStoreSize =3D=3D 0) { >=20 > - gNvDefaultStoreSize =3D PcdGetSize (PcdNvStoreDefaultValueBuffer); >=20 > + gNvDefaultStoreSize =3D PcdGetExSize > (&gEfiMdeModulePkgTokenSpaceGuid, PcdNvStoreDefaultValueBuffer); >=20 > } >=20 >=20 >=20 > if (gNvDefaultStoreSize < sizeof > (PCD_NV_STORE_DEFAULT_BUFFER_HEADER)) { >=20 > diff --git a/MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabaseDxe.inf > b/MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabaseDxe.inf > index 0116fb6ecb..dac4d614a8 100644 > --- a/MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabaseDxe.inf > +++ b/MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabaseDxe.inf > @@ -86,6 +86,9 @@ > gEfiHiiImageDecoderNameJpegGuid > |gEfiMdeModulePkgTokenSpaceGuid.PcdSupportHiiImageProtocol ## > SOMETIMES_CONSUMES ## GUID >=20 > gEfiHiiImageDecoderNamePngGuid > |gEfiMdeModulePkgTokenSpaceGuid.PcdSupportHiiImageProtocol ## > SOMETIMES_CONSUMES ## GUID >=20 > gEdkiiIfrBitVarstoreGuid = ## > SOMETIMES_CONSUMES ## GUID >=20 > + gEfiAuthenticatedVariableGuid >=20 > + gEfiVariableGuid >=20 > + gEfiMdeModulePkgTokenSpaceGuid >=20 >=20 >=20 > [Depex] >=20 > TRUE >=20 > -- > 2.25.1