Add core FFS3 support, DxeCore.
Signed-off-by: lzeng14 Reviewed-by: lgao4 git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@12584 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
@@ -133,7 +133,11 @@ VerifyHeaderChecksum (
|
||||
{
|
||||
UINT8 HeaderChecksum;
|
||||
|
||||
HeaderChecksum = CalculateSum8 ((UINT8 *) FfsHeader, sizeof (EFI_FFS_FILE_HEADER));
|
||||
if (IS_FFS_FILE2 (FfsHeader)) {
|
||||
HeaderChecksum = CalculateSum8 ((UINT8 *) FfsHeader, sizeof (EFI_FFS_FILE_HEADER2));
|
||||
} else {
|
||||
HeaderChecksum = CalculateSum8 ((UINT8 *) FfsHeader, sizeof (EFI_FFS_FILE_HEADER));
|
||||
}
|
||||
HeaderChecksum = (UINT8) (HeaderChecksum - FfsHeader->State - FfsHeader->IntegrityCheck.Checksum.File);
|
||||
|
||||
if (HeaderChecksum == 0) {
|
||||
@@ -202,7 +206,6 @@ IsValidFfsFile (
|
||||
{
|
||||
EFI_FFS_FILE_STATE FileState;
|
||||
UINT8 DataCheckSum;
|
||||
UINT32 FileLength;
|
||||
|
||||
FileState = GetFileState (ErasePolarity, FfsHeader);
|
||||
switch (FileState) {
|
||||
@@ -211,9 +214,12 @@ IsValidFfsFile (
|
||||
case EFI_FILE_DATA_VALID:
|
||||
case EFI_FILE_MARKED_FOR_UPDATE:
|
||||
DataCheckSum = FFS_FIXED_CHECKSUM;
|
||||
FileLength = *(UINT32 *)(FfsHeader->Size) & 0x00FFFFFF;
|
||||
if ((FfsHeader->Attributes & FFS_ATTRIB_CHECKSUM) == FFS_ATTRIB_CHECKSUM) {
|
||||
DataCheckSum = CalculateCheckSum8 ((CONST UINT8 *)FfsHeader + sizeof(EFI_FFS_FILE_HEADER), FileLength - sizeof(EFI_FFS_FILE_HEADER));
|
||||
if (IS_FFS_FILE2 (FfsHeader)) {
|
||||
DataCheckSum = CalculateCheckSum8 ((CONST UINT8 *) FfsHeader + sizeof (EFI_FFS_FILE_HEADER2), FFS_FILE2_SIZE (FfsHeader) - sizeof(EFI_FFS_FILE_HEADER2));
|
||||
} else {
|
||||
DataCheckSum = CalculateCheckSum8 ((CONST UINT8 *) FfsHeader + sizeof (EFI_FFS_FILE_HEADER), FFS_FILE_SIZE (FfsHeader) - sizeof(EFI_FFS_FILE_HEADER));
|
||||
}
|
||||
}
|
||||
if (FfsHeader->IntegrityCheck.Checksum.File == DataCheckSum) {
|
||||
return TRUE;
|
||||
|
Reference in New Issue
Block a user