// Verify file data checksum\r
//\r
FileLength = GetLength (FfsHeader->Size);\r
- Checksum = CalculateSum8 ((UINT8 *) FfsHeader, FileLength);\r
- Checksum = (UINT8) (Checksum - FfsHeader->State);\r
+ Checksum = CalculateSum8 ((UINT8 *) (FfsHeader + 1), FileLength - sizeof (EFI_FFS_FILE_HEADER));\r
+ Checksum = Checksum + FfsHeader->IntegrityCheck.Checksum.File;\r
if (Checksum != 0) {\r
Error (NULL, 0, 0006, "invalid FFS file checksum", "Ffs file with Guid %s", FileGuidString);\r
return EFI_ABORTED;\r
} else {\r
//\r
// File does not have a checksum\r
- // Verify contents are 0x5A as spec'd\r
+ // Verify contents are 0xAA as spec'd\r
//\r
if (FfsHeader->IntegrityCheck.Checksum.File != FFS_FIXED_CHECKSUM) {\r
Error (NULL, 0, 0006, "invalid fixed FFS file header checksum", "Ffs file with Guid %s", FileGuidString);\r