X-Git-Url: https://git.proxmox.com/?a=blobdiff_plain;f=MdeModulePkg%2FUniversal%2FSetupBrowserDxe%2FSetup.c;h=ab98ada1c800838aab73f023e208677e5502d28b;hb=d228526f931a51694919a65867310606e64611a5;hp=36ed98c9988f0b45e1f715103185083b4f377e24;hpb=158bb28ae03d85a513c49aec6539f159489700a0;p=mirror_edk2.git diff --git a/MdeModulePkg/Universal/SetupBrowserDxe/Setup.c b/MdeModulePkg/Universal/SetupBrowserDxe/Setup.c index 36ed98c998..ab98ada1c8 100644 --- a/MdeModulePkg/Universal/SetupBrowserDxe/Setup.c +++ b/MdeModulePkg/Universal/SetupBrowserDxe/Setup.c @@ -2461,18 +2461,23 @@ GetIfrBinaryData ( break; } - // - // Try to compare against formset class GUID - // - NumberOfClassGuid = (UINT8) (((EFI_IFR_FORM_SET *) OpCodeData)->Flags & 0x3); - ClassGuid = (EFI_GUID *) (OpCodeData + sizeof (EFI_IFR_FORM_SET)); - for (Index = 0; Index < NumberOfClassGuid; Index++) { - if (CompareGuid (ComparingGuid, ClassGuid + Index)) { - ClassGuidMatch = TRUE; + if (((EFI_IFR_OP_HEADER *) OpCodeData)->Length > OFFSET_OF (EFI_IFR_FORM_SET, Flags)) { + // + // Try to compare against formset class GUID + // + NumberOfClassGuid = (UINT8) (((EFI_IFR_FORM_SET *) OpCodeData)->Flags & 0x3); + ClassGuid = (EFI_GUID *) (OpCodeData + sizeof (EFI_IFR_FORM_SET)); + for (Index = 0; Index < NumberOfClassGuid; Index++) { + if (CompareGuid (ComparingGuid, ClassGuid + Index)) { + ClassGuidMatch = TRUE; + break; + } + } + if (ClassGuidMatch) { break; } - } - if (ClassGuidMatch) { + } else if (ComparingGuid == &gEfiHiiPlatformSetupFormsetGuid) { + ClassGuidMatch = TRUE; break; } }