//\r
CopyMem (Dst, Storage->EditBuffer + Question->VarStoreInfo.VarOffset, StorageWidth);\r
} else {\r
+ Value = NULL;\r
Status = GetValueByName (Storage, Question->VariableName, &Value);\r
if (EFI_ERROR (Status)) {\r
return Status;\r
}\r
\r
+ ASSERT (Value != NULL);\r
LengthStr = StrLen (Value);\r
Status = EFI_SUCCESS;\r
if (IsString) {\r
break;\r
}\r
\r
- //\r
- // Try to compare against formset class GUID\r
- //\r
- NumberOfClassGuid = (UINT8) (((EFI_IFR_FORM_SET *) OpCodeData)->Flags & 0x3);\r
- ClassGuid = (EFI_GUID *) (OpCodeData + sizeof (EFI_IFR_FORM_SET));\r
- for (Index = 0; Index < NumberOfClassGuid; Index++) {\r
- if (CompareGuid (ComparingGuid, ClassGuid + Index)) {\r
- ClassGuidMatch = TRUE;\r
+ if (((EFI_IFR_OP_HEADER *) OpCodeData)->Length > OFFSET_OF (EFI_IFR_FORM_SET, Flags)) {\r
+ //\r
+ // Try to compare against formset class GUID\r
+ //\r
+ NumberOfClassGuid = (UINT8) (((EFI_IFR_FORM_SET *) OpCodeData)->Flags & 0x3);\r
+ ClassGuid = (EFI_GUID *) (OpCodeData + sizeof (EFI_IFR_FORM_SET));\r
+ for (Index = 0; Index < NumberOfClassGuid; Index++) {\r
+ if (CompareGuid (ComparingGuid, ClassGuid + Index)) {\r
+ ClassGuidMatch = TRUE;\r
+ break;\r
+ }\r
+ }\r
+ if (ClassGuidMatch) {\r
break;\r
}\r
- }\r
- if (ClassGuidMatch) {\r
+ } else if (ComparingGuid == &gEfiHiiPlatformSetupFormsetGuid) {\r
+ ClassGuidMatch = TRUE;\r
break;\r
}\r
}\r