Index = 0;\r
\r
while (BlockListBuffer[Index] != 0) {\r
- if (Index == 0) {\r
- //\r
- // For the first Capsule Image, test integrity of descriptors.\r
- //\r
- LastBlock = ValidateCapsuleIntegrity ((EFI_CAPSULE_BLOCK_DESCRIPTOR *)(UINTN)BlockListBuffer[Index]);\r
+ //\r
+ // Test integrity of descriptors.\r
+ //\r
+ TempBlock = ValidateCapsuleIntegrity ((EFI_CAPSULE_BLOCK_DESCRIPTOR *)(UINTN)BlockListBuffer[Index]);\r
+ if (TempBlock != NULL) {\r
if (LastBlock == NULL) {\r
- return EFI_NOT_FOUND;\r
- }\r
- //\r
- // Return the base of the block descriptors\r
- //\r
- HeadBlock = (EFI_CAPSULE_BLOCK_DESCRIPTOR *)(UINTN)BlockListBuffer[Index];\r
- } else { \r
- //\r
- // Test integrity of descriptors.\r
- //\r
- TempBlock = ValidateCapsuleIntegrity ((EFI_CAPSULE_BLOCK_DESCRIPTOR *)(UINTN)BlockListBuffer[Index]);\r
- if (TempBlock == NULL) {\r
- return EFI_NOT_FOUND;\r
+ LastBlock = TempBlock;\r
+\r
+ //\r
+ // Return the base of the block descriptors\r
+ //\r
+ HeadBlock = (EFI_CAPSULE_BLOCK_DESCRIPTOR *)(UINTN)BlockListBuffer[Index];\r
+ } else {\r
+ //\r
+ // Combine the different BlockList into single BlockList.\r
+ //\r
+ LastBlock->Union.DataBlock = (EFI_PHYSICAL_ADDRESS)(UINTN)BlockListBuffer[Index];\r
+ LastBlock->Length = 0;\r
+ LastBlock = TempBlock;\r
}\r
- //\r
- // Combine the different BlockList into single BlockList.\r
- //\r
- LastBlock->Union.DataBlock = (EFI_PHYSICAL_ADDRESS)(UINTN)BlockListBuffer[Index];\r
- LastBlock->Length = 0;\r
- LastBlock = TempBlock;\r
}\r
Index ++;\r
}\r