summaryrefslogtreecommitdiff
path: root/BaseTools/Source/C/Common/FvLib.c
diff options
context:
space:
mode:
Diffstat (limited to 'BaseTools/Source/C/Common/FvLib.c')
-rw-r--r--BaseTools/Source/C/Common/FvLib.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/BaseTools/Source/C/Common/FvLib.c b/BaseTools/Source/C/Common/FvLib.c
index 292b077f34..dc50e877e6 100644
--- a/BaseTools/Source/C/Common/FvLib.c
+++ b/BaseTools/Source/C/Common/FvLib.c
@@ -703,8 +703,8 @@ Returns:
// Verify file data checksum
//
FileLength = GetLength (FfsHeader->Size);
- Checksum = CalculateSum8 ((UINT8 *) FfsHeader, FileLength);
- Checksum = (UINT8) (Checksum - FfsHeader->State);
+ Checksum = CalculateSum8 ((UINT8 *) (FfsHeader + 1), FileLength - sizeof (EFI_FFS_FILE_HEADER));
+ Checksum = Checksum + FfsHeader->IntegrityCheck.Checksum.File;
if (Checksum != 0) {
Error (NULL, 0, 0006, "invalid FFS file checksum", "Ffs file with Guid %s", FileGuidString);
return EFI_ABORTED;
@@ -712,7 +712,7 @@ Returns:
} else {
//
// File does not have a checksum
- // Verify contents are 0x5A as spec'd
+ // Verify contents are 0xAA as spec'd
//
if (FfsHeader->IntegrityCheck.Checksum.File != FFS_FIXED_CHECKSUM) {
Error (NULL, 0, 0006, "invalid fixed FFS file header checksum", "Ffs file with Guid %s", FileGuidString);