\r
if (File->Attributes & FFS_ATTRIB_CHECKSUM) {\r
File->IntegrityCheck.Checksum.File = FvBufCalculateChecksum8 (\r
- (VOID*)File,\r
- FileSize\r
+ (VOID*)(File + 1),\r
+ FileSize - sizeof (EFI_FFS_FILE_HEADER)\r
);\r
} else {\r
File->IntegrityCheck.Checksum.File = FFS_FIXED_CHECKSUM;\r
// Verify file data checksum\r
//\r
FileLength = GetLength (FfsHeader->Size);\r
- Checksum = CalculateSum8 ((UINT8 *) FfsHeader, FileLength);\r
+ Checksum = CalculateSum8 ((UINT8 *) (FfsHeader + 1), FileLength - sizeof (EFI_FFS_FILE_HEADER));\r
Checksum = (UINT8) (Checksum - FfsHeader->State);\r
if (Checksum != 0) {\r
Error (NULL, 0, 0006, "invalid FFS file checksum", "Ffs file with Guid %s", FileGuidString);\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
VtfFile->State = 0;\r
if (VtfFile->Attributes & FFS_ATTRIB_CHECKSUM) {\r
VtfFile->IntegrityCheck.Checksum.File = CalculateChecksum8 (\r
- (UINT8 *) VtfFile,\r
- GetLength (VtfFile->Size)\r
+ (UINT8 *) (VtfFile + 1),\r
+ GetLength (VtfFile->Size) - sizeof (EFI_FFS_FILE_HEADER)\r
);\r
} else {\r
VtfFile->IntegrityCheck.Checksum.File = FFS_FIXED_CHECKSUM;\r
//\r
FvExtHeader = malloc(FileSize);\r
if (FvExtHeader == NULL) {\r
+ fclose (FvExtHeaderFile);\r
return EFI_OUT_OF_RESOURCES;\r
}\r
\r
fclose (fpin);\r
CurrentOffset += sizeof (EFI_FFS_FILE_HEADER) + FvExtendHeaderSize;\r
CurrentOffset = (CurrentOffset + 7) & (~7);\r
- } else if (mFvDataInfo.FvNameGuidSet && (CompareGuid (&mFvDataInfo.FvNameGuid, &mZeroGuid) != 0)) {\r
+ } else if (mFvDataInfo.FvNameGuidSet) {\r
CurrentOffset += sizeof (EFI_FFS_FILE_HEADER) + sizeof (EFI_FIRMWARE_VOLUME_EXT_HEADER);\r
CurrentOffset = (CurrentOffset + 7) & (~7);\r
}\r
SavedState = FfsFile->State;\r
FfsFile->IntegrityCheck.Checksum.File = 0;\r
FfsFile->State = 0;\r
- if (FfsFile->Attributes & FFS_ATTRIB_CHECKSUM) {\r
- FfsFile->IntegrityCheck.Checksum.File = CalculateChecksum8 (\r
- (UINT8 *) FfsFile,\r
- GetLength (FfsFile->Size)\r
- );\r
- } else {\r
- FfsFile->IntegrityCheck.Checksum.File = FFS_FIXED_CHECKSUM;\r
- }\r
-\r
+ FfsFile->IntegrityCheck.Checksum.File = CalculateChecksum8 (\r
+ (UINT8 *) (FfsFile + 1),\r
+ GetLength (FfsFile->Size) - sizeof (EFI_FFS_FILE_HEADER)\r
+ );\r
FfsFile->State = SavedState;\r
}\r
\r
SavedState = FfsFile->State;\r
FfsFile->IntegrityCheck.Checksum.File = 0;\r
FfsFile->State = 0;\r
- if (FfsFile->Attributes & FFS_ATTRIB_CHECKSUM) {\r
- FfsFile->IntegrityCheck.Checksum.File = CalculateChecksum8 (\r
- (UINT8 *) FfsFile,\r
- GetLength (FfsFile->Size)\r
- );\r
- } else {\r
- FfsFile->IntegrityCheck.Checksum.File = FFS_FIXED_CHECKSUM;\r
- }\r
-\r
+ FfsFile->IntegrityCheck.Checksum.File = CalculateChecksum8 (\r
+ (UINT8 *)(FfsFile + 1),\r
+ GetLength (FfsFile->Size) - sizeof (EFI_FFS_FILE_HEADER)\r
+ );\r
FfsFile->State = SavedState;\r
}\r
//\r
FileHeader->IntegrityCheck.Checksum.File = 0;\r
FileHeader->State = 0;\r
FileHeader->IntegrityCheck.Checksum.Header = CalculateChecksum8 ((UINT8 *) FileHeader, sizeof (EFI_FFS_FILE_HEADER));\r
- FileHeader->IntegrityCheck.Checksum.File = CalculateChecksum8 ((UINT8 *) FileHeader, TotalVtfSize);\r
+ FileHeader->IntegrityCheck.Checksum.File = CalculateChecksum8 ((UINT8 *) (FileHeader + 1), TotalVtfSize - sizeof (EFI_FFS_FILE_HEADER));\r
FileHeader->State = EFI_FILE_HEADER_CONSTRUCTION | EFI_FILE_HEADER_VALID | EFI_FILE_DATA_VALID;\r
\r
return EFI_SUCCESS;\r
//
// Calculate file checksum
//
- Checksum = CalculateSum8 ((UINT8 *) FileHeader, FileLength);
+ Checksum = CalculateSum8 ((UINT8 *) (FileHeader + 1), FileLength - sizeof (EFI_FFS_FILE_HEADER));
Checksum = (UINT8) (Checksum - FileHeader->State);
if (Checksum != 0) {
Error (NULL, 0, 0003, "error parsing FFS file", "FFS file with Guid %s has invalid file checksum", GuidBuffer);
}
} else {
if (FileHeader->IntegrityCheck.Checksum.File != FFS_FIXED_CHECKSUM) {
- Error (NULL, 0, 0003, "error parsing FFS file", "FFS file with Guid %s has invalid header checksum -- not set to fixed value of 0x5A", GuidBuffer);
+ Error (NULL, 0, 0003, "error parsing FFS file", "FFS file with Guid %s has invalid header checksum -- not set to fixed value of 0xAA", GuidBuffer);
return EFI_ABORTED;
}
}