CHAR16 *gEmptyString;\r
CHAR16 *mUnknownString = L"!";\r
\r
-EFI_GUID gZeroGuid = {0, 0, 0, {0, 0, 0, 0, 0, 0, 0, 0}};\r
-\r
extern EFI_GUID mCurrentFormSetGuid;\r
extern EFI_HII_HANDLE mCurrentHiiHandle;\r
extern UINT16 mCurrentFormId;\r
// If EDKII_FORM_DISPLAY_ENGINE_PROTOCOL not found, return EFI_UNSUPPORTED.\r
//\r
if (mFormDisplay == NULL) {\r
+ DEBUG ((DEBUG_ERROR, "Fatal Error! EDKII_FORM_DISPLAY_ENGINE_PROTOCOL not found!"));\r
return EFI_UNSUPPORTED;\r
}\r
\r
CHAR16 *StrPtr;\r
UINTN BufferSize;\r
UINTN TmpSize;\r
+ UINTN MaxLen;\r
FORMSET_STORAGE *BrowserStorage;\r
\r
if (RetrieveData) {\r
// Copy the data if the input buffer is bigger enough.\r
//\r
if (*ResultsDataSize >= BufferSize) {\r
- StrCpy (*ResultsData, StrPtr);\r
+ StrCpyS (*ResultsData, *ResultsDataSize / sizeof (CHAR16), StrPtr);\r
}\r
\r
*ResultsDataSize = BufferSize;\r
ASSERT (BrowserStorage != NULL);\r
TmpSize = StrLen (*ResultsData);\r
BufferSize = (TmpSize + StrLen (BrowserStorage->ConfigHdr) + 2) * sizeof (CHAR16);\r
+ MaxLen = BufferSize / sizeof (CHAR16);\r
ConfigResp = AllocateZeroPool (BufferSize);\r
ASSERT (ConfigResp != NULL);\r
\r
- StrCpy (ConfigResp, BrowserStorage->ConfigHdr);\r
- StrCat (ConfigResp, L"&");\r
- StrCat (ConfigResp, *ResultsData);\r
+ StrCpyS (ConfigResp, MaxLen, BrowserStorage->ConfigHdr);\r
+ StrCatS (ConfigResp, MaxLen, L"&");\r
+ StrCatS (ConfigResp, MaxLen, *ResultsData);\r
\r
//\r
// Update Browser uncommited data\r
)\r
{\r
CHAR16 *NewString;\r
- UINTN TmpSize;\r
+ UINTN MaxLen;\r
\r
if (*Dest == NULL) {\r
NewStringCpy (Dest, Src);\r
return;\r
}\r
\r
- TmpSize = StrSize (*Dest);\r
- NewString = AllocateZeroPool (TmpSize + StrSize (Src) - 1);\r
+ MaxLen = ( StrSize (*Dest) + StrSize (Src) - 1) / sizeof (CHAR16);\r
+ NewString = AllocateZeroPool (MaxLen * sizeof (CHAR16));\r
ASSERT (NewString != NULL);\r
\r
- StrCpy (NewString, *Dest);\r
- StrCat (NewString, Src);\r
+ StrCpyS (NewString, MaxLen, *Dest);\r
+ StrCatS (NewString, MaxLen, Src);\r
\r
FreePool (*Dest);\r
*Dest = NewString;\r
DstBuf = (CHAR16 *) Dst;\r
ZeroMem (TemStr, sizeof (TemStr));\r
for (Index = 0; Index < LengthStr; Index += 4) {\r
- StrnCpy (TemStr, Value + Index, 4);\r
+ StrnCpyS (TemStr, sizeof (TemStr) / sizeof (CHAR16), Value + Index, 4);\r
DstBuf[Index/4] = (CHAR16) StrHexToUint64 (TemStr);\r
}\r
//\r
CHAR16 *Value;\r
UINTN Length;\r
BOOLEAN IsBufferStorage;\r
+ UINTN MaxLen;\r
\r
Status = EFI_SUCCESS;\r
Value = NULL;\r
Length = StrLen (FormsetStorage->ConfigHdr);\r
Length += StrLen (Question->VariableName) + 1;\r
}\r
- ConfigRequest = AllocateZeroPool ((Length + 1) * sizeof (CHAR16));\r
+ // Allocate buffer include '\0'\r
+ MaxLen = Length + 1;\r
+ ConfigRequest = AllocateZeroPool (MaxLen * sizeof (CHAR16));\r
ASSERT (ConfigRequest != NULL);\r
\r
- StrCpy (ConfigRequest, FormsetStorage->ConfigHdr);\r
+ StrCpyS (ConfigRequest, MaxLen, FormsetStorage->ConfigHdr);\r
if (IsBufferStorage) {\r
- StrCat (ConfigRequest, Question->BlockName);\r
+ StrCatS (ConfigRequest, MaxLen, Question->BlockName);\r
} else {\r
- StrCat (ConfigRequest, L"&");\r
- StrCat (ConfigRequest, Question->VariableName);\r
+ StrCatS (ConfigRequest, MaxLen, L"&");\r
+ StrCatS (ConfigRequest, MaxLen, Question->VariableName);\r
}\r
\r
//\r
CHAR16 *TemString;\r
UINTN Index;\r
NAME_VALUE_NODE *Node;\r
+ UINTN MaxLen;\r
\r
Status = EFI_SUCCESS;\r
Node = NULL;\r
}\r
FormsetStorage = GetFstStgFromVarId(FormSet, Question->VarStoreId);\r
ASSERT (FormsetStorage != NULL);\r
- ConfigResp = AllocateZeroPool ((StrLen (FormsetStorage->ConfigHdr) + Length + 1) * sizeof (CHAR16));\r
+ MaxLen = StrLen (FormsetStorage->ConfigHdr) + Length + 1;\r
+ ConfigResp = AllocateZeroPool (MaxLen * sizeof (CHAR16));\r
ASSERT (ConfigResp != NULL);\r
\r
- StrCpy (ConfigResp, FormsetStorage->ConfigHdr);\r
+ StrCpyS (ConfigResp, MaxLen, FormsetStorage->ConfigHdr);\r
if (IsBufferStorage) {\r
- StrCat (ConfigResp, Question->BlockName);\r
- StrCat (ConfigResp, L"&VALUE=");\r
+ StrCatS (ConfigResp, MaxLen, Question->BlockName);\r
+ StrCatS (ConfigResp, MaxLen, L"&VALUE=");\r
} else {\r
- StrCat (ConfigResp, L"&");\r
- StrCat (ConfigResp, Question->VariableName);\r
- StrCat (ConfigResp, L"=");\r
+ StrCatS (ConfigResp, MaxLen, L"&");\r
+ StrCatS (ConfigResp, MaxLen, Question->VariableName);\r
+ StrCatS (ConfigResp, MaxLen, L"=");\r
}\r
\r
Value = ConfigResp + StrLen (ConfigResp);\r
CHAR16 *NewStr;\r
UINTN StringSize;\r
UINTN StrLength;\r
+ UINTN MaxLen;\r
\r
StrLength = StrLen (RequestElement);\r
+ StringSize = (*ConfigRequest != NULL) ? StrSize (*ConfigRequest) : sizeof (CHAR16);\r
+ MaxLen = StringSize / sizeof (CHAR16) + *SpareStrLen;\r
\r
//\r
// Append <RequestElement> to <ConfigRequest>\r
//\r
// Old String buffer is not sufficient for RequestElement, allocate a new one\r
//\r
- StringSize = (*ConfigRequest != NULL) ? StrSize (*ConfigRequest) : sizeof (CHAR16);\r
- NewStr = AllocateZeroPool (StringSize + CONFIG_REQUEST_STRING_INCREMENTAL * sizeof (CHAR16));\r
+ MaxLen = StringSize / sizeof (CHAR16) + CONFIG_REQUEST_STRING_INCREMENTAL;\r
+ NewStr = AllocateZeroPool (MaxLen * sizeof (CHAR16));\r
ASSERT (NewStr != NULL);\r
\r
if (*ConfigRequest != NULL) {\r
*SpareStrLen = CONFIG_REQUEST_STRING_INCREMENTAL;\r
}\r
\r
- StrCat (*ConfigRequest, RequestElement);\r
+ StrCatS (*ConfigRequest, MaxLen, RequestElement);\r
*SpareStrLen -= StrLength;\r
}\r
\r