\r
//\r
// Check to see of FmpImageInfoBuf GUID/HardwareInstance is unique\r
+ // Skip if HardwareInstance is 0 as this is the case if FmpVersion < 3\r
+ // or the device can not create a unique ID per UEFI specification\r
//\r
- for (Index = 0; Index < *NumberOfDescriptors; Index++) {\r
- if (CompareGuid (&HardwareInstances[Index].ImageTypeGuid, &FmpImageInfoBuf->ImageTypeId)) {\r
- if (HardwareInstances[Index].HardwareInstance == FmpHardwareInstance) {\r
- DEBUG ((DEBUG_ERROR, "EsrtFmpDxe: Duplicate firmware image descriptor with GUID %g HardwareInstance:0x%x\n", &FmpImageInfoBuf->ImageTypeId, FmpHardwareInstance));\r
- ASSERT (\r
- !CompareGuid (&HardwareInstances[Index].ImageTypeGuid, &FmpImageInfoBuf->ImageTypeId) ||\r
- HardwareInstances[Index].HardwareInstance != FmpHardwareInstance\r
- );\r
- return EFI_UNSUPPORTED;\r
+ if (FmpHardwareInstance != 0) {\r
+ for (Index = 0; Index < *NumberOfDescriptors; Index++) {\r
+ if (CompareGuid (&HardwareInstances[Index].ImageTypeGuid, &FmpImageInfoBuf->ImageTypeId)) {\r
+ if (HardwareInstances[Index].HardwareInstance == FmpHardwareInstance) {\r
+ DEBUG ((DEBUG_ERROR, "EsrtFmpDxe: Duplicate firmware image descriptor with GUID %g HardwareInstance:0x%x\n", &FmpImageInfoBuf->ImageTypeId, FmpHardwareInstance));\r
+ ASSERT (\r
+ !CompareGuid (&HardwareInstances[Index].ImageTypeGuid, &FmpImageInfoBuf->ImageTypeId) ||\r
+ HardwareInstances[Index].HardwareInstance != FmpHardwareInstance\r
+ );\r
+ return EFI_UNSUPPORTED;\r
+ }\r
}\r
}\r
}\r