mirror of
https://github.com/tianocore/edk2
synced 2026-08-27 00:23:19 -04:00
ArmPkg: ArmStandaloneMmCoreEntryPoint: Use SafeIntLib for arithmetics
This change adds the SafeIntLib to communication input routine to validate the incoming MM communication buffer length before using. Signed-off-by: Kun Qin <kun.qin@microsoft.com>
This commit is contained in:
parent
a12f593715
commit
9e43f2f6d4
2 changed files with 19 additions and 2 deletions
|
|
@ -527,6 +527,10 @@ ValidateMmCommBufferAddr (
|
|||
&gEfiMmCommunicateHeaderV3Guid
|
||||
))
|
||||
{
|
||||
if (CommBufferRange < sizeof (EFI_MM_COMMUNICATE_HEADER_V3)) {
|
||||
return EFI_ACCESS_DENIED;
|
||||
}
|
||||
|
||||
CommBufferHeaderV3 = (EFI_MM_COMMUNICATE_HEADER_V3 *)CommBufferAddr;
|
||||
Status = SafeUint64Add (
|
||||
CommBufferHeaderV3->MessageSize,
|
||||
|
|
@ -536,9 +540,21 @@ ValidateMmCommBufferAddr (
|
|||
if (EFI_ERROR (Status)) {
|
||||
return EFI_ACCESS_DENIED;
|
||||
}
|
||||
|
||||
if (BufferSize > CommBufferHeaderV3->BufferSize) {
|
||||
return EFI_ACCESS_DENIED;
|
||||
}
|
||||
|
||||
BufferSize = CommBufferHeaderV3->BufferSize;
|
||||
} else {
|
||||
BufferSize = ((EFI_MM_COMMUNICATE_HEADER *)CommBufferAddr)->MessageLength +
|
||||
OFFSET_OF (EFI_MM_COMMUNICATE_HEADER, Data);
|
||||
Status = SafeUint64Add (
|
||||
((EFI_MM_COMMUNICATE_HEADER *)CommBufferAddr)->MessageLength,
|
||||
OFFSET_OF (EFI_MM_COMMUNICATE_HEADER, Data),
|
||||
&BufferSize
|
||||
);
|
||||
if (EFI_ERROR (Status)) {
|
||||
return EFI_ACCESS_DENIED;
|
||||
}
|
||||
}
|
||||
|
||||
Status = SafeUint64Add (
|
||||
|
|
|
|||
|
|
@ -44,6 +44,7 @@
|
|||
ArmFfaLib
|
||||
StackCheckLib
|
||||
HobLib
|
||||
SafeIntLib
|
||||
|
||||
[Guids]
|
||||
gMpInformationHobGuid
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue