Signed-off-by: Eric Dong <eric.dong@intel.com>
Reviewed-by: Liming Gao <liming.gao@intel.com>
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@14006
6f19259b-4bc3-4df7-8a09-
765794883524
OpCode.DefaultId = DefaultId;\r
CopyMem (&OpCode.Value, &Value, mHiiDefaultTypeToWidth[Type]);\r
\r
OpCode.DefaultId = DefaultId;\r
CopyMem (&OpCode.Value, &Value, mHiiDefaultTypeToWidth[Type]);\r
\r
- return InternalHiiCreateOpCode (OpCodeHandle, &OpCode, EFI_IFR_DEFAULT_OP, sizeof (OpCode));\r
+ return InternalHiiCreateOpCode (OpCodeHandle, &OpCode, EFI_IFR_DEFAULT_OP, OFFSET_OF(EFI_IFR_DEFAULT, Value) + mHiiDefaultTypeToWidth[Type]);\r
//\r
DefaultData.Type = DefaultValueFromOpcode;\r
DefaultData.DefaultId = VarDefaultId;\r
//\r
DefaultData.Type = DefaultValueFromOpcode;\r
DefaultData.DefaultId = VarDefaultId;\r
- CopyMem (&DefaultData.Value, &IfrDefault->Value, sizeof (EFI_IFR_TYPE_VALUE));\r
+ CopyMem (&DefaultData.Value, &IfrDefault->Value, IfrDefault->Header.Length - OFFSET_OF (EFI_IFR_DEFAULT, Value));\r
\r
// If the value field is expression, set the cleaned flag.\r
if (IfrDefault->Type == EFI_IFR_TYPE_OTHER) {\r
\r
// If the value field is expression, set the cleaned flag.\r
if (IfrDefault->Type == EFI_IFR_TYPE_OTHER) {\r
\r
CurrentDefault->Value.Type = ((EFI_IFR_DEFAULT *) OpCodeData)->Type;\r
CopyMem (&CurrentDefault->DefaultId, &((EFI_IFR_DEFAULT *) OpCodeData)->DefaultId, sizeof (UINT16));\r
\r
CurrentDefault->Value.Type = ((EFI_IFR_DEFAULT *) OpCodeData)->Type;\r
CopyMem (&CurrentDefault->DefaultId, &((EFI_IFR_DEFAULT *) OpCodeData)->DefaultId, sizeof (UINT16));\r
- if (OpCodeLength == sizeof (EFI_IFR_DEFAULT)) {\r
- CopyMem (&CurrentDefault->Value.Value, &((EFI_IFR_DEFAULT *) OpCodeData)->Value, sizeof (EFI_IFR_TYPE_VALUE));\r
+ if (OpCodeLength > OFFSET_OF (EFI_IFR_DEFAULT, Value)) {\r
+ CopyMem (&CurrentDefault->Value.Value, &((EFI_IFR_DEFAULT *) OpCodeData)->Value, OpCodeLength - OFFSET_OF (EFI_IFR_DEFAULT, Value));\r
ExtendValueToU64 (&CurrentDefault->Value);\r
}\r
\r
ExtendValueToU64 (&CurrentDefault->Value);\r
}\r
\r