VOID *Buffer;\r
EFI_STATUS Status;\r
UINT32 Attribute;\r
+ UINTN SetSize;\r
\r
Size = 0;\r
+ SetSize = 0;\r
\r
//\r
// Try to get original variable size information.\r
&Size,\r
NULL\r
);\r
-\r
+ \r
if (Status == EFI_BUFFER_TOO_SMALL) {\r
//\r
// Patch new PCD's value to offset in given HII variable.\r
//\r
- \r
- Buffer = AllocatePool (Size);\r
-\r
+ if (Size >= (DataSize + Offset)) {\r
+ SetSize = Size;\r
+ } else {\r
+ SetSize = DataSize + Offset;\r
+ }\r
+ Buffer = AllocatePool (SetSize);\r
ASSERT (Buffer != NULL);\r
\r
Status = gRT->GetVariable (\r
VariableName,\r
VariableGuid,\r
Attribute,\r
- Size,\r
+ SetSize,\r
Buffer\r
);\r
\r
FreePool (Buffer);\r
return Status;\r
-\r
} else if (Status == EFI_NOT_FOUND) {\r
//\r
// If variable does not exist, a new variable need to be created.\r