summaryrefslogtreecommitdiff
path: root/MdeModulePkg/Universal/HiiDatabaseDxe
AgeCommit message (Collapse)AuthorFilesLines
2026-07-31MdeModulePkg/HiiDatabaseDxe: Fix potential intrinsic errorMichael Kubacki1-19/+14
In some VS22 versions, these code patterns (assiging the scalar in a loop) have been found to be converted into calls to the `memcpy` intrinsic. This change updates them to use CopyMem to avoid the potential error. Previous: - MSVC version: 14.31.31103 New: - MSVC version: 14.32.31326 Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com>
2026-05-06MdeModulePkg: Cleanup debug print readabilityBenjamin Doron1-1/+1
All debug prints should end in a newline character. Signed-off-by: Benjamin Doron <benjamin.doron00@gmail.com>
2026-02-24MdeModulePkg: Replace include guards with #pragma onceMichael Kubacki1-4/+1
Replace traditional `#ifndef`/`#define`/`#endif` include guards with `#pragma` once. `#pragma once` is a widely supported preprocessor directive that prevents header files from being included multiple times. It is supported by all toolchains used to build edk2: GCC, Clang/LLVM, and MSVC. Compared to macro-based include guards, `#pragma once`: - Eliminates the risk of macro name collisions or copy/paste errors where two headers inadvertently use the same guard macro. - Eliminate inconsistency in the way include guard macros are named (e.g., some files use `__FILE_H__`, others use `FILE_H_`, etc.). - Reduces boilerplate (three lines replaced by one). - Avoids polluting the macro namespace with guard symbols. - Can improve build times as the preprocessor can skip re-opening the file entirely, rather than re-reading it to find the matching `#endif` ("multiple-include optimization"). - Note that some compilers may already optimize traditional include guards, by recognzining the idiomatic pattern. This change is made acknowledging that overall portability of the code will technically be reduced, as `#pragma once` is not part of the C/C++ standards. However, this is considered acceptable given: 1. edk2 already defines a subset of supported compilers in BaseTools/Conf/tools_def.template, all of which have supported `#pragma once` for over two decades. 2. There have been concerns raised to the project about inconsistent include guard naming and potential macro collisions. Approximate compiler support dates: - MSVC: Supported since Visual C++ 4.2 (1996) - GCC: Supported since 3.4 (2004) (http://gnu.ist.utl.pt/software/gcc/gcc-3.4/changes.html) - Clang (LLVM based): Since initial release in 2007 Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com>
2026-02-10MdeModulePkg/HiiDatabaseDxe: Fix parser issue in GetNameElement()Yang Gang1-2/+0
This commit removes an wrong goto statement which may cause DXE_ASSERT! `ConfigRequest` example: `&NameValueVar0&NameValueVar1&NameValueVar2`. When `*Progress` is `&NameValueVar2`, code will run to `goto Done;`, then return NULL. Signed-off-by: Yang Gang <yanggang@byosoft.com.cn>
2025-12-06MdeModulePkg: Fix regressions from 11686, 11687, 11688, 11689.Aaron Pop1-1/+4
11686, 11687, 11688, 11689 included some inverted conditionals during the refactor. While the system booted, some behavior was incorrect based on the inverted conditionals. Signed-off-by: Aaron Pop <aaronpop@microsoft.com>
2025-12-02MdeModulePkg: Fix recently introduced uninitialized variable usage.Aaron Pop1-0/+1
Address the build regressions, introduced in #11724, #11688, #11686 #11685. These build regressions are for uninitialized variables before use. Signed-off-by: Aaron Pop <aaronpop@microsoft.com>
2025-11-23MdeModulePkg: Fix missing NULL tests.Aaron Pop3-29/+126
https://github.com/github/codeql/blob/codeql-cli-2.7.3/cpp/ql/src/Critical/MissingNullTest.qhelp For items which allocate memory, or get a pointer from another structure, it is important to validate that the pointers are not null before they are dereferenced. Signed-off-by: Aaron Pop <aaronpop@microsoft.com>
2025-11-22MdeModulePkg: fix various typosPhilipp Schuster1-1/+1
Signed-off-by: Philipp Schuster <philipp.schuster@cyberus-technology.de>
2025-10-10MdeModulePkg/HiiDatabaseDxe: Avoid unexpected memory freeQihang Gao1-1/+1
TempBuffer variable is only dynamically allocated when the opcode is EFI_IFR_STRING_OP and the string value is not 0, so it should be freed under the same condition. Otherwise, the variable may be unexpected freed. Signed-off-by: Qihang Gao <gaoqihang@loongson.cn>
2025-08-22MdeModulePkg/HiiDatabaseDxe: Avoid assert in InternalGetStringGao Qihang1-1/+2
If string default is set to zero in vfr file and VfrCompile may not found the invalid operation, assert is trigged. This patch will check whether StringId is 0 to avoid assert. Cc: Chao Li <lichao@loongson.cn> Signed-off-by: Gao Qihang <gaoqihang@loongson.cn>
2025-07-08MdeModulePkg: Remove UGA supportGuoMinJ1-1/+1
The Universal Graphics Adapter (UGA) is a graphic abstraction. The UGA I/O and Draw protocols are deprecated since UEFI 2.0 was introduced. Cf. the UEFI spec v2.9: "Appendix L - EFI 1.10 Protocol Changes and Deprecation List" section L.2 "Deprecated Protocols" Remove the UGA support. Signed-off-by: GuoMinJ <newexplorerj@gmail.com> Signed-off-by: Pierre Gondois <pierre.gondois@arm.com>
2025-06-09MdeModulePkg/HiiDatabaseDxe: Fix NULL Pointer access from EfiVarStoreDeepakX Singh1-0/+5
Issue : When user access "Boot Maintenance Manager Menu/Secure Boot Configuration Menu" with PcdNullPointerDetectionPropertyMask|0x03 and PcdHeapGuardPageType|0x7FFF protection policy set, we get X64 Exception Type - 0E(#PF - Page-Fault) Root cause : When user access "Boot Maintenance Manager Menu/Secure Boot Configuration Menu", BIOS calls FindQuestionDefaultSetting function and send EFI VarStore header pointer to AuthFindVariableData function. When header pointer is NULL, it send NULL pointer to AuthFindVariableData function and causes the page fault. Fix : Database.c: In function FindQuestionDefaultSetting, added NULL pointers check, so that when EFI VarStore header argument is passed to AuthFindVariableData function, NULL pointer access will not happen. Test: Cross verified while accessing the "Boot Maintenance Manager Menu/ Secure Boot Configuration Menu" page. Signed-off-by: DeepakX Singh <deepakx.singh@intel.com>
2025-05-16MdeModulePkg/HiiDatabaseDxe: Fix BlockSize lengthMaximilian Brune1-1/+1
The BlockSize calculation was missing the 0 terminator which caused the string block to shrink by 1 every time the string was processed. Therefore causing memory corruptions, because the string took more memory space as was allocated for the string block therefore corrupting the memory pool at the end (which caused an ASSERT upon trying to free it). Signed-off-by: Maximilian Brune <maximilian.brune@9elements.com>
2025-02-28MdeModulePkg/HiiDatabaseDxe: Prevent linker errorMichael Kubacki1-55/+60
Prevent an issue where `memcpy()` instrinsic is being used after recent MSVC linker update in windows-2022 VM image from 14.31.31103 to 14.32.31326. Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com>
2025-02-21MdeModulePkg/HiiDatabaseDxe: Remove buffer error for string default.edk2-stable202502Longhaox Lee1-5/+4
Remove efivarstore IFR buffer error when string load default. In the case of varstore type IFR, it will be NULL, just break into next opcode process. Resolve issue from commit cbe8a09dbac5c39d24ce5c4b9e7d44607f6c23da varstore type IFR string might return status error while execute ExtractConfig function. Signed-off-by: Longhao Lee <longhaox.lee@intel.com>
2025-01-14MdeModulePkg/HiiDatabaseDxe: Add string question load default support.Longhaox Lee1-0/+173
Add string question load default support. load default data from PCD PcdNvStoreDefaultValueBuffer. Signed-off-by: Longhao Lee <longhaox.lee@intel.com>
2024-12-02MdeModulePkg/HiiDatabase: Return default value for BIT VarStore as UNIT32Dandan Bi1-2/+2
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4874 Question CheckBox, OneOf and Numeric can refer to Bit EFI VarStore. CheckBox: data type is Boolean (1 byte), Numeric/Oneof: data type is always UNIT32 for BIT VarStore, When get default value for BIT VarStore, should return default value with sizeof (UINT32) rather than the byte the bit width occupied. Or incorrect default value will be used due to the size mismatch. Signed-off-by: Dandan Bi <dandan.bi@intel.com>
2024-10-30MdeModulePkg: Adding support for authenticated variablenikhil p sheshagiri2-49/+132
storage data format REF:https://bugzilla.tianocore.org/show_bug.cgi?id=4857 NVS needs to support both authenticated and non-authenticated header for NV region. PcdNvStoreDefaultValueBuffer can have variables with data format of the type Authenticated variable storage and this change provides the support to differentiate between the normal variable storage and authenticated variable storage for the hii database to consume and update the setup variables accordingly Signed-off-by: nikhil p sheshagiri <nikhil.p.sheshagiri@intel.com>
2024-06-06MdeModulePkg/HiiDatabaseDxe: Remove assert for VarStoreId = 0Jeff Brasen1-2/+3
It is legal for the VarStoreId of a question to be 0 per the UEFI spec: "Specifies the identifier of a previously declared variable store to use when storing the question’s value. A value of zero indicates no associated variable store." Instead of hitting an assert just skip this question as there is no value to return. Signed-off-by: Jeff Brasen <jbrasen@nvidia.com>
2024-06-04MdeModulePkg/HiiDatabaseDxe: Avoid struct assignmentArd Biesheuvel1-4/+5
Struct assignments are not permitted in EDK2, as they may be converted by the compiler into calls to the 'memcpy' intrinsic, which is not guaranteed to be available in EDK2. So replace the assignment with a call to CopyMem (), and -while at it- replace the loop with a single CopyMem () call, as the loop operates on items that are contiguous in memory. Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
2023-09-11MdeModulePkg/HiiDatabase: Fix incorrect AllocateCopyPool sizeMike Beaton1-1/+1
The immediately preceding call, GetBestLanguage, plus the implementation of HiiGetString, which is called immediately afterwards, make it clear that BestLanguage is a null-terminated ASCII string, and not just a five byte, non-null terminated buffer. Therefore AsciiStrLen is one byte too short, meaning that whether the space allocated is really sufficient and whether the resultant string is really null-terminated becomes implementation-dependent. Rather than switching to AsciiStrSize, we use an explicitly compile-time string length calculation (both compile-time and run-time approaches are currently used elsewhere in the codebase for copying static strings). Signed-off-by: Mike Beaton <mjsbeaton@gmail.com> Reviewed-by: Liming Gao <gaoliming@byosoft.com.cn> Reviewed-by: Dandan Bi <dandan.bi@intel.com>
2023-04-03MdeModulePkg: Fix conditionally uninitialized variablesMichael Kubacki1-5/+9
Fixes CodeQL alerts for CWE-457: https://cwe.mitre.org/data/definitions/457.html Cc: Dandan Bi <dandan.bi@intel.com> Cc: Eric Dong <eric.dong@intel.com> Cc: Erich McMillan <emcmillan@microsoft.com> Cc: Guomin Jiang <guomin.jiang@intel.com> Cc: Jian J Wang <jian.j.wang@intel.com> Cc: Liming Gao <gaoliming@byosoft.com.cn> Cc: Michael Kubacki <mikuback@linux.microsoft.com> Cc: Ray Ni <ray.ni@intel.com> Cc: Zhichao Gao <zhichao.gao@intel.com> Co-authored-by: Erich McMillan <emcmillan@microsoft.com> Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com> Reviewed-by: Liming Gao <gaoliming@byosoft.com.cn> Reviewed-by: Oliver Smith-Denny <osd@smith-denny.com>
2022-04-08MdeModulePkg/HiiDatabase: Fix Setup numeric default value incorrect issueChen, Lin Z2-0/+47
When default/manufacturing flag get removed from numeric varid, it can't get default value from StructurePcd in 'UpdateDefaultSettingInFormPackage' function since there is no EFI_IFR_DEFAULT_OP opcode in IFR file. Add a chance to get numeric default value from StructurePcd in the case that numeric minimum value will be used as default value. Signed-off-by: Chen Lin Z <lin.z.chen@intel.com> Signed-off-by: Dandan Bi <dandan.bi@intel.com> Reviewed-by: Liming Gao <gaoliming@byosoft.com.cn>
2021-12-07MdeModulePkg: Apply uncrustify changesMichael Kubacki9-6071/+6584
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3737 Apply uncrustify changes to .c/.h files in the MdeModulePkg package Cc: Andrew Fish <afish@apple.com> Cc: Leif Lindholm <leif@nuviainc.com> Cc: Michael D Kinney <michael.d.kinney@intel.com> Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com> Reviewed-by: Liming Gao <gaoliming@byosoft.com.cn>
2021-12-07MdeModulePkg: Change OPTIONAL keyword usage styleMichael D Kinney5-34/+31
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3760 Update all use of ', OPTIONAL' to ' OPTIONAL,' for function params. Cc: Andrew Fish <afish@apple.com> Cc: Leif Lindholm <leif@nuviainc.com> Cc: Michael Kubacki <michael.kubacki@microsoft.com> Signed-off-by: Michael D Kinney <michael.d.kinney@intel.com> Reviewed-by: Liming Gao <gaoliming@byosoft.com.cn>
2021-12-07MdeModulePkg: Change use of EFI_D_* to DEBUG_*Michael D Kinney1-2/+2
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3739 Update all use of EFI_D_* defines in DEBUG() macros to DEBUG_* defines. Cc: Andrew Fish <afish@apple.com> Cc: Leif Lindholm <leif@nuviainc.com> Cc: Michael Kubacki <michael.kubacki@microsoft.com> Signed-off-by: Michael D Kinney <michael.d.kinney@intel.com> Reviewed-by: Liming Gao <gaoliming@byosoft.com.cn>
2021-09-02MdeModulePkg/HiiDatabaseDxe:remove dead code blockWenyi Xie1-3/+0
As the if statement outside has confirmed that BlockData->Name == NULL, so the if statement inside is always false. Cc: Jian J Wang <jian.j.wang@intel.com> Cc: Hao A Wu <hao.a.wu@intel.com> Cc: Dandan Bi <dandan.bi@intel.com> Cc: Eric Dong <eric.dong@intel.com> Signed-off-by: Wenyi Xie <xiewenyi2@huawei.com> Reviewed-by: Dandan Bi <dandan.bi@intel.com>
2020-10-07MdeModulePkg/HiiDatabase: Do not modify CONST stringJeff Brasen1-5/+7
Update function behavior to not modify the incoming string that is marked as CONST in the prototype. Signed-off-by: Jeff Brasen <jbrasen@nvidia.com> Reviewed-by: Dandan Bi <dandan.bi@intel.com>
2020-02-14MdeModulePkg/String.c: Zero memory before free (CVE-2019-14558)Dandan Bi1-1/+8
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=1611 Cc: Liming Gao <liming.gao@intel.com> Cc: Eric Dong <eric.dong@intel.com> Cc: Jian J Wang <jian.j.wang@intel.com> Signed-off-by: Dandan Bi <dandan.bi@intel.com> Reviewed-by: Eric Dong <eric.dong@intel.com> Reviewed-by: Jian J Wang <jian.j.wang@intel.com>
2020-02-14MdeModulePkg/HiiDB: Remove configuration table when it's freed (CVE-2019-14586)Dandan Bi1-1/+9
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=1995 Fix the corner case issue that the original configuration runtime memory is freed, but it is still exposed to the OS runtime. So this patch is to remove the configuration table to avoid being used in OS runtime when the configuration runtime memory is freed. Cc: Liming Gao <liming.gao@intel.com> Cc: Eric Dong <eric.dong@intel.com> Cc: Jian J Wang <jian.j.wang@intel.com> Signed-off-by: Dandan Bi <dandan.bi@intel.com> Reviewed-by: Eric Dong <eric.dong@intel.com> Reviewed-by: Jian J Wang <jian.j.wang@intel.com>
2019-11-06MdeModulePkg/HiiDatabaseDxe: ASSERT StringPtrShenglei Zhang1-0/+1
The caller of CompareAndMergeDefaultString has checked that AltCfgResp must contain AltConfigHdr. So we add ASSERT to assume StringPtr is not NULL. Cc: Dandan Bi <dandan.bi@intel.com> Cc: Eric Dong <eric.dong@intel.com> Signed-off-by: Shenglei Zhang <shenglei.zhang@intel.com> Reviewed-by: Dandan Bi <dandan.bi@intel.com>
2019-11-04MdeModulePkg/HiiDatabaseDxe: ASSERT "Private->Attribute >> 4"Shenglei Zhang1-0/+1
Foreground and background color are saved in a single byte. Bits 0..3 are the foreground color and bits 4..6 are the background color. If the Private->Attribute defined correctly, (Private->Attribute >> 4) must be less than 8. This commit uses ASSERT to assume "Attribute >> 4" is less than 8. Cc: Dandan Bi <dandan.bi@intel.com> Cc: Eric Dong <eric.dong@intel.com> Signed-off-by: Shenglei Zhang <shenglei.zhang@intel.com> Reviewed-by: Dandan Bi <dandan.bi@intel.com>
2019-04-28MdeModulePkg/HiiDB: Minimize memory allocation times after ReadyToBootDandan Bi1-7/+17
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=1597 Currently RTData are allocated at/after ReadyToBoot to store the contents in HiiDatabase and the HII configurations for OS runtime utilization. Some platforms may meet S4 resume issue since the allocation after ReadyToBoot cause memory map change. Now this patch is to do some overallocation to minimize the number of memory allocations after ReadyToBoot and also add warning message when do allocation after ReadyToBoot. Cc: Michael D Kinney <michael.d.kinney@intel.com> Cc: Liming Gao <liming.gao@intel.com> Cc: Eric Dong <eric.dong@intel.com> Signed-off-by: Dandan Bi <dandan.bi@intel.com> Reviewed-by: Michael D Kinney <michael.d.kinney@intel.com> Reviewed-by: Eric Dong <eric.dong@intel.com>
2019-04-24MdeModulePkg/HiiDatabaseDxe: Release lock on all error return pathDandan Bi1-1/+6
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=1652 Commit ffe5f7a6b4e9 "MdeModulePkg/HiiDatabase: Fix potential integer overflow " added some new error paths, but it missed releasing the mHiiDatabaseLock lock on those paths. This patch releases mHiiDatabaseLock on those paths. Cc: Hao Wu <hao.a.wu@intel.com> Cc: Ray Ni <ray.ni@intel.com> Cc: Liming Gao <liming.gao@intel.com> Signed-off-by: Dandan Bi <dandan.bi@intel.com> Reviewed-by: Hao Wu <hao.a.wu@intel.com> (cherry picked from commit 927c516f9557f2f36319fe5d2508af29e3375fb8)
2019-04-09MdeModulePkg: Replace BSD License with BSD+Patent LicenseMichael D Kinney12-84/+12
https://bugzilla.tianocore.org/show_bug.cgi?id=1373 Replace BSD 2-Clause License with BSD+Patent License. This change is based on the following emails: https://lists.01.org/pipermail/edk2-devel/2019-February/036260.html https://lists.01.org/pipermail/edk2-devel/2018-October/030385.html RFCs with detailed process for the license change: V3: https://lists.01.org/pipermail/edk2-devel/2019-March/038116.html V2: https://lists.01.org/pipermail/edk2-devel/2019-March/037669.html V1: https://lists.01.org/pipermail/edk2-devel/2019-March/037500.html Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Michael D Kinney <michael.d.kinney@intel.com> Reviewed-by: Hao Wu <hao.a.wu@intel.com> Reviewed-by: Jian J Wang <jian.j.wang@intel.com>
2019-03-08MdeModulePkg/HiiImage: Fix stack overflow when corrupted BMP is parsed ↵edk2-stable201903Ray Ni1-2/+2
(CVE-2018-12181) REF: https://bugzilla.tianocore.org/show_bug.cgi?id=1135 For 4bit BMP, there are only 2^4 = 16 colors in the palette. But when a corrupted BMP contains more than 16 colors in the palette, today's implementation wrongly copies all colors to the local PaletteValue[16] array which causes stack overflow. The similar issue also exists in the logic to handle 8bit BMP. The patch fixes the issue by only copies the first 16 or 256 colors in the palette depending on the BMP type. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Ray Ni <ray.ni@intel.com> Cc: Liming Gao <liming.gao@intel.com> Cc: Jiewen Yao <jiewen.yao@intel.com> Reviewed-by: Jian J Wang <jian.j.wang@intel.com>
2019-03-08MdeModulePkg/HiiDatabase: Fix potential integer overflow (CVE-2018-12181)Ray Ni1-23/+103
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=1135 Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Ray Ni <ray.ni@intel.com> Cc: Dandan Bi <dandan.bi@intel.com> Cc: Hao A Wu <hao.a.wu@intel.com> Reviewed-by: Hao Wu <hao.a.wu@intel.com> Reviewed-by: Jian J Wang <jian.j.wang@intel.com>
2018-10-26MdeModulePkg/HiiDB: Make sure database update behaviors are atomicDandan Bi4-1/+75
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=1235 When update contents in HiiDatabase, like: 1. Add/update/remove package list 2. Add/update string 3. Add/update image We should make these operations atomic to prevent the potential issue that the one update operation with higher TPL may interrupt another. This commit is to make the HiiDatabase update behaviors atomic by adding EfiAcquireLock/EfiReleaseLock function. Cc: Liming Gao <liming.gao@intel.com> Cc: Eric Dong <eric.dong@intel.com> Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Dandan Bi <dandan.bi@intel.com> Reviewed-by: Liming Gao <liming.gao@intel.com>
2018-10-26MdeModulePkg/HiiDB: Reorganize codes of exporting HII settingsDandan Bi3-47/+37
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=1235 Function "HiiGetConfigurationSetting" may be called when HiiDatabase contents have been updated. And it is just to call function "HiiGetDatabaseInfo" to get the contents in HiiDatabase and call function "HiiGetConfigRespInfo" and get the configuration response string form HII drivers. So here we can remove function "HiiGetConfigurationSetting" and make caller to call "HiiGetDatabaseInfo" and "HiiGetConfigRespInfo" directly. And thus it also can distinguish which code blocks are to operate HiiDatabase contents and which code blocks are not. Then it's easy to know which code blocks should be atomic when updating HiiDatabase contents. Cc: Liming Gao <liming.gao@intel.com> Cc: Eric Dong <eric.dong@intel.com> Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Dandan Bi <dandan.bi@intel.com> Reviewed-by: Liming Gao <liming.gao@intel.com>
2018-10-09MdeModulePkg/HiiDB: Fix incorrect structure convention for checkboxDandan Bi1-1/+1
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=1224 When covert IFR binary to EFI_IFR_CHECKBOX structure, Current code has following incorrect code logic: IfrCheckBox = (EFI_IFR_CHECKBOX *) (IfrOpHdr + 1); The correct one should be: IfrCheckBox = (EFI_IFR_CHECKBOX *) IfrOpHdr; 1. The bug is in function "UpdateDefaultSettingInFormPackage()" which is to update the default setting of some HII Questions in the IFR binary data. So it only has impact when platform overrides default setting in HII VarStore through DynamicHii PCD setting in Platform DSC file. If platform doesn't override default setting, it has no impact. 2. The implementation updates the "Flags" filed in the EFI_IFR_CHECKBOX structure to update the default setting of checkbox. If using "IfrCheckBox = (EFI_IFR_CHECKBOX *) (IfrOpHdr + 1);" when wants to update the " Flags" filed in checkbox, but in fact it will update the opcode binary data(opcode binary length) behind checkbox binary. And then it will cause Browser can't parse the IFR binary data correctly. And then the possible symptom is that some HII Question and forms may be not parsed and then cannot be shown. This patch is to fix this bug. Cc: Liming Gao <liming.gao@intel.com> Cc: Star Zeng <star.zeng@intel.com> Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Dandan Bi <dandan.bi@intel.com> Reviewed-by: Liming Gao <liming.gao@intel.com>
2018-09-06MdeModulePkg: Removing ipf which is no longer supported from edk2.Chen A Chen1-1/+1
Removing rules for Ipf sources file: * Remove the source file which path with "ipf" and also listed in [Sources.IPF] section of INF file. * Remove the source file which listed in [Components.IPF] section of DSC file and not listed in any other [Components] section. * Remove the embedded Ipf code for MDE_CPU_IPF. Removing rules for Inf file: * Remove IPF from VALID_ARCHITECTURES comments. * Remove DXE_SAL_DRIVER from LIBRARY_CLASS in [Defines] section. * Remove the INF which only listed in [Components.IPF] section in DSC. * Remove statements from [BuildOptions] that provide IPF specific flags. * Remove any IPF sepcific sections. Removing rules for Dec file: * Remove [Includes.IPF] section from Dec. Removing rules for Dsc file: * Remove IPF from SUPPORTED_ARCHITECTURES in [Defines] section of DSC. * Remove any IPF specific sections. * Remove statements from [BuildOptions] that provide IPF specific flags. Cc: Star Zeng <star.zeng@intel.com> Cc: Eric Dong <eric.dong@intel.com> Cc: Michael D Kinney <michael.d.kinney@intel.com> Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Chen A Chen <chen.a.chen@intel.com> Reviewed-by: Star Zeng <star.zeng@intel.com>
2018-08-21MdeModulePkg HiiDatabaseDxe: Remove a redundant functionshenglei1-47/+0
The function GetStorageWidth that is never called has been removed. https://bugzilla.tianocore.org/show_bug.cgi?id=1062 Cc: Star Zeng <star.zeng@intel.com> Cc: Eric Dong <eric.dong@intel.com> Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: shenglei <shenglei.zhang@intel.com> Reviewed-by: Star Zeng <star.zeng@intel.com> Reviewed-by: Laszlo Ersek <lersek@redhat.com> Reviewed-by: Eric Dong <eric.dong@intel.com>
2018-06-28MdeModulePkg: Clean up source filesLiming Gao11-458/+458
1. Do not use tab characters 2. No trailing white space in one line 3. All files must end with CRLF Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Liming Gao <liming.gao@intel.com> Reviewed-by: Star Zeng <star.zeng@intel.com>
2017-12-28MdeModulePkg HiiDataBase: Fix the potential NULL pointer accessLiming Gao1-3/+8
Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Liming Gao <liming.gao@intel.com> Reviewed-by: Star Zeng <star.zeng@intel.com>
2017-12-27MdeModulePkg HiiDataBase: Fix the potential NULL pointer referenceLiming Gao1-4/+6
This change is the additional fix of commit 14b351e2ed8586f144dd3cd2e0a25082c1a32837. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Liming Gao <liming.gao@intel.com> Cc: Star Zeng <star.zeng@intel.com> Reviewed-by: Star Zeng <star.zeng@intel.com>
2017-12-26MdeModulePkg HiiDataBaseDxe: Add the check for the memory allocation returnLiming Gao1-0/+9
Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Liming Gao <liming.gao@intel.com> Cc: Star Zeng <star.zeng@intel.com> Reviewed-by: Star Zeng <star.zeng@intel.com>
2017-12-25MdeModulePkg HiiDataBaseDxe: Initialize the local variable before referenceLiming Gao1-0/+3
Make VS2012x86 and GCC48 pass build Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Liming Gao <liming.gao@intel.com> Reviewed-by: Eric Dong <eric.dong@intel.com>
2017-12-25MdeModulePkg HiiDataBase: Enable Firmware to retrieve the default settingLiming Gao3-2/+523
https://bugzilla.tianocore.org/show_bug.cgi?id=611 Update HiiDataBase to retrieve the default setting and patch IFR data Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Liming Gao <liming.gao@intel.com> Signed-off-by: Dandan Bi <dandan.bi@intel.com> Reviewed-by: Star Zeng <star.zeng@intel.com>
2017-11-08MdeModulePkg: Fix misuses of AllocateCopyPoolJian J Wang1-3/+6
AllocateCopyPool(AllocationSize, *Buffer) will copy "AllocationSize" bytes of memory from old "Buffer" to new allocated one. If "AllocationSize" is bigger than size of "Buffer", heap memory overflow occurs during copy. One solution is to allocate pool first then copy the necessary bytes to new memory. Another is using ReallocatePool instead if old buffer will be freed on spot. Cc: Star Zeng <star.zeng@intel.com> Cc: Eric Dong <eric.dong@intel.com> Cc: Bi Dandan <dandan.bi@intel.com> Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Jian J Wang <jian.j.wang@intel.com> Reviewed-by: Star Zeng <star.zeng@intel.com> Reviewed-by: Bi Dandan <dandan.bi@intel.com>
2017-09-21MdeModulePkg/HiiDatabase: Handle questions with Bit VarStoreDandan Bi3-36/+319
REF:https://bugzilla.tianocore.org/show_bug.cgi?id=545 For oneof/numeric/checkbox, their storage may be bit field. When generating <ConfigAltResp> string to get default value for these questions, we need to parse the Ifr data to get the bit Varstore info,and then generating the correct <ConfigAltResp> string. Cc: Eric Dong <eric.dong@intel.com> Cc: Liming Gao <liming.gao@intel.com> Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Dandan Bi <dandan.bi@intel.com> Reviewed-by: Eric Dong <eric.dong@intel.com> Reviewed-by: Liming Gao <liming.gao@intel.com>