fix: [MTL]: Fix coverity issue with boot guard event (#2135)

Signed-off-by: Subash Lakkimsetti <subash.lakkimsetti@intel.com>
This commit is contained in:
Subash Lakkimsetti 2024-02-06 01:23:31 -07:00 committed by GitHub
parent 84ccd424a7
commit e9d39227c3
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 28 additions and 19 deletions

View File

@ -687,31 +687,32 @@ FindBpmElement (
Buffer += sizeof(BOOT_POLICY_MANIFEST_HEADER); Buffer += sizeof(BOOT_POLICY_MANIFEST_HEADER);
IbbElement = (IBB_ELEMENT *)Buffer; IbbElement = (IBB_ELEMENT *)Buffer;
if (*(UINT64 *)IbbElement->StructureId != BOOT_POLICY_MANIFEST_IBB_ELEMENT_STRUCTURE_ID) {
return NULL;
}
if (StructureId == BOOT_POLICY_MANIFEST_IBB_ELEMENT_STRUCTURE_ID) {
return Buffer;
}
// Advance to end of IBB_ELEMENT structure do {
Buffer = (UINT8*) &(IbbElement->PostIbbHash); if (*(UINT64 *)IbbElement->StructureId != BOOT_POLICY_MANIFEST_IBB_ELEMENT_STRUCTURE_ID) {
Buffer += sizeof(UINT32) + IbbElement->PostIbbHash.Size; return NULL;
Buffer += sizeof(UINT32); //entrypoint }
if (StructureId == BOOT_POLICY_MANIFEST_IBB_ELEMENT_DIGEST_ID) { if (StructureId == BOOT_POLICY_MANIFEST_IBB_ELEMENT_STRUCTURE_ID) {
return Buffer; return Buffer;
} }
Buffer += sizeof(UINT32) + ((SHAX_HASH_STRUCTURE*)Buffer)->Size; //digest if (StructureId == BOOT_POLICY_MANIFEST_IBB_ELEMENT_DIGEST_ID) {
Buffer += sizeof(UINT8) + (sizeof(IBB_SEGMENT) * (*Buffer)); //size * segmentcount // Advance to end of IBB_ELEMENT structure
Buffer = (UINT8*) &(IbbElement->PostIbbHash);
Buffer += sizeof(UINT32) + IbbElement->PostIbbHash.Size;
Buffer += sizeof(UINT32); //IbbEntryPoint
return Buffer;
} else {
Buffer += IbbElement->ElementSize; // Go to the end of the IBB Element structure
}
IbbElement = (IBB_ELEMENT *)Buffer;
} while (*(UINT64 *)IbbElement->StructureId == BOOT_POLICY_MANIFEST_IBB_ELEMENT_STRUCTURE_ID); // to support multiple IBB Elements
// Do we have TXT element in BPM? // Do we have TXT element in BPM?
// If so, advance to end of TXT_ELEMENT structure // If so, advance to end of TXT_ELEMENT structure
TxtElement = (TXT_ELEMENT *)Buffer; TxtElement = (TXT_ELEMENT *)Buffer;
if (*(UINT64 *)TxtElement->StructureId == BOOT_POLICY_MANIFEST_TXT_ELEMENT_STRUCTURE_ID) if (*(UINT64 *)TxtElement->StructureId == BOOT_POLICY_MANIFEST_TXT_ELEMENT_STRUCTURE_ID)
{ {
Buffer = (UINT8*) &(TxtElement->DigestList); Buffer += TxtElement->ElementSize;
Buffer += sizeof(UINT32) + TxtElement->DigestList.Size;
Buffer += sizeof(UINT8) + (sizeof(IBB_SEGMENT) * (*Buffer)); //size * segmentcount
} }
// Do we have Platform Config Data element in BPM? // Do we have Platform Config Data element in BPM?
@ -719,7 +720,15 @@ FindBpmElement (
PcdsElement = (PLATFORM_CONFIG_DATA_ELEMENT *)Buffer; PcdsElement = (PLATFORM_CONFIG_DATA_ELEMENT *)Buffer;
if (*(UINT64 *)PcdsElement->StructureId == BOOT_POLICY_MANIFEST_PLATFORM_CONFIG_DATA_ELEMENT_STRUCTURE_ID) if (*(UINT64 *)PcdsElement->StructureId == BOOT_POLICY_MANIFEST_PLATFORM_CONFIG_DATA_ELEMENT_STRUCTURE_ID)
{ {
Buffer += 11 + PcdsElement->SizeOfData; if (StructureId == BOOT_POLICY_MANIFEST_PLATFORM_CONFIG_DATA_ELEMENT_STRUCTURE_ID) {
return Buffer;
}
if (StructureId == BPM_CNBS_ELEMENT_STRUCTURE_ID) {
Buffer = (UINT8*) &(PcdsElement->SizeOfData);
Buffer += sizeof(UINT16) + (*Buffer);
return Buffer;
}
Buffer += PcdsElement->ElementSize;
} }
// Do we have Platform Manufacturer element in BPM? // Do we have Platform Manufacturer element in BPM?