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:
Kun Qin 2026-07-10 16:42:47 -07:00
parent a12f593715
commit 9e43f2f6d4
2 changed files with 19 additions and 2 deletions

View file

@ -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 (

View file

@ -44,6 +44,7 @@
ArmFfaLib
StackCheckLib
HobLib
SafeIntLib
[Guids]
gMpInformationHobGuid