- UINT64 RangeToCompareEnd;\r
- UINT64 ReservedRangeToCompareEnd;\r
-\r
- RangeToCompareEnd = RangeToCompare->CpuStart + RangeToCompare->PhysicalSize;\r
- ReservedRangeToCompareEnd = ReservedRangeToCompare->SmramReservedStart + ReservedRangeToCompare->SmramReservedSize;\r
+ UINT64 RangeToCompareEnd;\r
+ UINT64 ReservedRangeToCompareEnd;\r
+ BOOLEAN IsOverUnderflow1;\r
+ BOOLEAN IsOverUnderflow2;\r
+\r
+ // Check for over or underflow.\r
+ IsOverUnderflow1 = EFI_ERROR (\r
+ SafeUint64Add (\r
+ (UINT64)RangeToCompare->CpuStart,\r
+ RangeToCompare->PhysicalSize,\r
+ &RangeToCompareEnd\r
+ )\r
+ );\r
+ IsOverUnderflow2 = EFI_ERROR (\r
+ SafeUint64Add (\r
+ (UINT64)ReservedRangeToCompare->SmramReservedStart,\r
+ ReservedRangeToCompare->SmramReservedSize,\r
+ &ReservedRangeToCompareEnd\r
+ )\r
+ );\r
+ if (IsOverUnderflow1 || IsOverUnderflow2) {\r
+ return TRUE;\r
+ }\r