Added "PublishTables()" and "SdtNotifyAcpiList()" for completing
AddTableToList behavior in the InstallAcpiTableFromAcpiSiliconHob().
Signed-off-by: George Liao <george.liao@intel.com>
Clearing wrong memory content after allocated memory for XSDT,
which caused AcpiSdtProtocol cannot be installed and
unexpected behavior.
According to the UEFI spec and commit message of "PCD switch to
avoid using ACPI reclaim memory", so need to add this support in the
InstallAcpiTableFromAcpiSiliconHob().
1. Fixed memory corruption issue in the
InstallAcpiTableFromAcpiSiliconHob().
2. Added "PCD switch to avoid using ACPI reclaim memory" support in
the InstallAcpiTableFromAcpiSiliconHob().
Signed-off-by: George Liao <george.liao@intel.com>
PR #11380 that removed the Unicode Collation Protocol
introduced a logic bug in the use of GetBestLanguage().
Iso639Language would always be computed to TRUE when it
should always be passed to GetBestLanguage() as FALSE
once Unicode Collation Protocol is removed.
Update InitializeUnicodeCollationSupportWorker() to
remove the local variable Iso639Language and always
call GetBestLanguage() with the Iso639Language parameter
set to FALSE.
Signed-off-by: Michael D Kinney <michael.d.kinney@intel.com>
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>
There is a possibility to retrieve user input keystroke data stored in the
queue buffer via the EFI_SIMPLE_TEXT_INPUT_PROTOCOL pointer. To prevent
exposure of the password string, clear the queue buffer by filling it
with zeros after reading.
Signed-off-by: Nick Wang <nick.wang@insyde.com>
edk2 is dropping support for the ARM32 architecture. This
commit removes ARM32 support from MdeModulePkg. This also
drops irrelevant VALID_ARCHITECTURE comments from infs that
are not arch specific.
Signed-off-by: Oliver Smith-Denny <osde@microsoft.com>
Adjust AnsiTestString to be compatible with wide/narrow string in
TerminalDxe driver. If WIDE_CHAR or NARROW_CHAR is hit, the string
is still valid since OutputString function will correctly handle it.
Signed-off-by: Gao Qihang <gaoqihang@loongson.cn>
Add four newly added terminal types in TerminalConOutTestString, although
this function is rarely used. This patch is a supplement to previous patch
8a53ea9d9f.
Signed-off-by: Gao Qihang <gaoqihang@loongson.cn>
Remove default from checkbox statement that is not part
of the checkbox statement syntax to remove VFR compiler
warning.
Signed-off-by: Michael D Kinney <michael.d.kinney@intel.com>
Build failed with the below error:
error: variable 'Status' is used uninitialized when
PcdUnicodeCollation2Support is FALSE.
Fixing this issue by initializing Status unconditionally.
This is a regression issue caused by below Edk2 commit
a46697f735
Signed-off-by: HemaAnmisha <hema.anmisha.kalavakolanu@intel.com>
Adding to the previous commit deprecating
EFI_UNICODE_COLLATION_PROTOCOL_GUID in MdeModulePkg.
Cc: Sachin Ganesh <sachinganesh@ami.com>
Signed-off-by: Gowtham M <gowthamm@ami.com>
Commit 9224a2b917
adds support for larger terminal dimensions; however, the ANSI control
sequences to manipulate the terminal cursor are not built to accomodate
terminal dimensions that are three digits long.
For example, suppose we want to move the cursor 163 columns to the
right. The required control sequence would be `^[[163C`; however, the
existing code will create a control sequence of `^[[@3C` due to trying
to add 16 to the character '0' instead of either 1 or 6.
This fix adds a third digit to the sequence templates for moving the
cursor forward, moving it backwards, and setting the cursor position.
Signed-off-by: Jack Little <jack.tay.little@hpe.com>
When set to TRUE, bit EFI_OS_INDICATIONS_FMP_CAPSULE_SUPPORTED of
OsIndications is set.
At the moment EDK never sets this bit (there is only definition with no
uses), maybe nothing actually checks its value. Whatever the reason is,
it seems like a good idea to make setting it possible.
Signed-off-by: Sergii Dmytruk <sergii.dmytruk@3mdeb.com>
Fix TestString() to be compatible with wide/narrow string in
GraphicsConsole driver. If WIDE_CHAR or NARROW_CHAR is hit in
TestString function, ignore it since OutputString function will
correctly handle it.
Fix OutputString() to skip wide/narrow char in TerminalDxe. Because
they are not displayable in terminal emulation tool, ingore to
output if they are hit in OutputString function.
Signed-off-by: Gao Qihang <gaoqihang@loongson.cn>
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>
Running Codeql on MdeModulePkg/Universal/Variable drivers results
in codeql errors stemming for the following two checks.
- cpp/comparison-with-wider-type
- cpp/overflow-buffer
- cpp/missing-null-test
Signed-off-by: Aaron Pop <aaronpop@microsoft.com>
Co-authored-by: Michael Kubacki <michael.kubacki@microsoft.com>
Co-authored-by: Taylor Beebe <tabeebe@microsoft.com>
Co-authored-by: pohanch <125842322+pohanch@users.noreply.github.com>
Co-authored-by: kenlautner <85201046+kenlautner@users.noreply.github.com>
Co-authored-by: Oliver Smith-Denny <osde@linux.microsoft.com>
Co-authored-by: Sean Brogan <sean.brogan@microsoft.com>
Co-authored-by: Aaron <aaronpop@microsoft>
Running Codeql on MdeModulePkg/Universal/Console drivers results
in codeql errors stemming for the following checks.
- cpp/comparison-with-wider-type
- cpp/missing-null-test
Signed-off-by: Aaron Pop <aaronpop@microsoft.com>
Co-authored-by: Michael Kubacki <michael.kubacki@microsoft.com>
Co-authored-by: Taylor Beebe <tabeebe@microsoft.com>
Co-authored-by: pohanch <125842322+pohanch@users.noreply.github.com>
Co-authored-by: kenlautner <85201046+kenlautner@users.noreply.github.com>
Co-authored-by: Oliver Smith-Denny <osde@linux.microsoft.com>
Co-authored-by: Sean Brogan <sean.brogan@microsoft.com>
Co-authored-by: Aaron <aaronpop@microsoft>
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>
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>
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>
Add validation for FtwWorkSpaceHeader within the
WorkSpaceRefresh() function to address an issue where the
variable store cannot recover from the FTW spare block if the
variable store is erased or corrupted during an FTW write or
reclaim operation.
Signed-off-by: Wenbo Hou <wenbo.hou@microsoft.com>
As the MM cores begin to support MM Communicate v3, this update moves the
driver to communicate to MM agent through MM Communicate v3 PPI.
Signed-off-by: Kun Qin <kun.qin@microsoft.com>
As MM cores start to support MM communciate v3. This change moves the
variable driver to use MM communicate v3 if it is available, otherwise the
driver will fallback to v2 to keep the same functionality.
Signed-off-by: Kun Qin <kun.qin@microsoft.com>
The RegisteredCallback field of IdtEntryTable is used to
store the address of functions with different function
prototypes depending on the ExceptionType. Add local
variables with the correct function prototypes and evaluate
the ExceptionType to assign correct local variable to the
RegisteredCallback value and use local variable to call
the registered callback function with the correct arguments
for the ExceptionType.
Update declaration of InterruptDistrubutionHub() to use
the non-CPU specific EFI_SYSTEM_CONTEXT parameter type
instead of the IA32 specific EFI_SYSTEM_CONTEXT_IA32
because this function is used for both IA32 and X64.
Signed-off-by: Michael D Kinney <michael.d.kinney@intel.com>
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>
The latest VS2022 update replaces some code patterns with struct
assignments with `memcpy`. This change convert the code to
explicitly use `CopyMem`.
Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com>
When building with gcc 15.1, building RegularExpressionDxe fails
because it can't find the type ptrdiff_t. Therefore, add a typedef
for it in OniguramaUefiPort.h.
Signed-off-by: Rebecca Cran <rebecca@bsdio.com>
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>
1. Got RSDP table which installed during the FSP phase from Hob,
then pass it to the DXE AcpiTableInstance.
2. Got XSDT from RSDP and extract necessary data from XSDT,
according to the old XSDT to Initialize a new XSDT.
3. Re-install ACPI table from old XSDT to the new XSDT.
a. If Hob has DSDT table then re-install DSDT table in the new XSDT.
If not, then skip it.
b. If Hob has FACS table then re-install FACS table in the new XSDT.
If not, then skip it.
Signed-off-by: George Liao <george.liao@intel.com>
Function `PrintStringAt` returns the count of Unicode character, which
is not correct for computing column offset when display empty string if
wide character is introduced. `GetStringWidth (String) / 2 - 1` is
suitable option which is compatible with wide and narrow characters.
Cc: Lichao <lichao@loongson.cn>
Cc: Qian Dongyan <qiandongyan@loongson.cn>
Signed-off-by: Gao Qihang <gaoqihang@loongson.cn>
When the terminal driver is active, currently terminals available through
SetMode function are limited to mode 0 (80x25) despite multiple modes are
configured as MaxMode value (e.g. 3 modes in mTerminalConsoleModeData
list). Improve the function to support multiple modes based on the value.
Additionally add more modes that match with the GraphicsConsoleDxe driver.
This update is expected to help the symptom that the Setup or Shell screen
becomes smaller due to the text mode.
Signed-off-by: Phil Noh <Phil.Noh@amd.com>
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>
On a MM system, the main UEFI variable logic resides in MMRAM. In
that case, the variable policy logic in `VarCheckPolicyLib`, such as
`VarCheckPolicyLibStandaloneMm` is linked against the MM driver also
in that case `VariableStandaloneMm`.
The MM variable driver indicates its presence to the RT DXE driver
via `gEfiSmmVariableProtocolGuid` to indicate variable read support
is available from MM. This triggers installation of the variable
architectural protocol in DXE.
Today, variable policy is initialized by calling
`VariablePolicySmmDxeMain()` in `VariableSmmRuntimeInitialize()`. In
turn, this installs `gEdkiiVariablePolicyProtocolGuid`. Functions in
`gEdkiiVariablePolicyProtocolGuid` may trigger MMIs. However, it is
possible that the MM variable driver which is linked against the code
with the variable policy MMI handlers (i.e. `VarCheckPolicyLib`) is
not loaded yet.
Therefore, this change moves invocation of
`VariablePolicySmmDxeMain()` to `SmmVariableReady()` which is called
on installation of `gEfiSmmVariableProtocolGuid` indicating variable
MM services are ready. `gEdkiiVariablePolicyProtocolGuid` is still
installed prior to the variable architectural protocol being
installed.
Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com>
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 cbe8a09dba
varstore type IFR string might return status error
while execute ExtractConfig function.
Signed-off-by: Longhao Lee <longhaox.lee@intel.com>
This commit oves StackCheckLib from a NULL lib to an instance of
StackCheckLib. This requires every entry point to add a library
dependency on StackCheckLib. It also requires every SEC module
to have a dependency on StackCheckLib because there is no
standard SEC entry point.
It allows for greater flexibility for a platform to apply stack
cookies and simplifies DSC logic.
Continuous-integration-options: PatchCheck.ignore-multi-package
Signed-off-by: Oliver Smith-Denny <osde@microsoft.com>