MdeModulePkg:Use safe string functions
Replace unsafe String functions with new added safe string functions Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Dandan Bi <dandan.bi@intel.com> Reviewed-by: Liming Gao <liming.gao@intel.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@17724 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
@@ -1324,6 +1324,7 @@ IfrCatenate (
|
||||
UINT16 Length0;
|
||||
UINT16 Length1;
|
||||
UINT8 *TmpBuf;
|
||||
UINTN MaxLen;
|
||||
|
||||
//
|
||||
// String[0] - The second string
|
||||
@@ -1363,10 +1364,11 @@ IfrCatenate (
|
||||
|
||||
if (Value[0].Type == EFI_IFR_TYPE_STRING) {
|
||||
Size = StrSize (String[0]);
|
||||
StringPtr= AllocatePool (StrSize (String[1]) + Size);
|
||||
MaxLen = (StrSize (String[1]) + Size) / sizeof (CHAR16);
|
||||
StringPtr= AllocatePool (MaxLen * sizeof (CHAR16));
|
||||
ASSERT (StringPtr != NULL);
|
||||
StrCpy (StringPtr, String[1]);
|
||||
StrCat (StringPtr, String[0]);
|
||||
StrCpyS (StringPtr, MaxLen, String[1]);
|
||||
StrCatS (StringPtr, MaxLen, String[0]);
|
||||
|
||||
Result->Type = EFI_IFR_TYPE_STRING;
|
||||
Result->Value.string = NewString (StringPtr, FormSet->HiiHandle);
|
||||
|
@@ -688,6 +688,7 @@ InitializeRequestElement (
|
||||
LIST_ENTRY *Link;
|
||||
BOOLEAN Find;
|
||||
FORM_BROWSER_CONFIG_REQUEST *ConfigInfo;
|
||||
UINTN MaxLen;
|
||||
|
||||
Storage = Question->Storage;
|
||||
if (Storage == NULL) {
|
||||
@@ -732,6 +733,8 @@ InitializeRequestElement (
|
||||
//
|
||||
FormsetStorage = GetFstStgFromVarId(FormSet, Question->VarStoreId);
|
||||
ASSERT (FormsetStorage != NULL);
|
||||
StringSize = (FormsetStorage->ConfigRequest != NULL) ? StrSize (FormsetStorage->ConfigRequest) : sizeof (CHAR16);
|
||||
MaxLen = StringSize / sizeof (CHAR16) + FormsetStorage->SpareStrLen;
|
||||
|
||||
//
|
||||
// Append <RequestElement> to <ConfigRequest>
|
||||
@@ -740,8 +743,8 @@ InitializeRequestElement (
|
||||
//
|
||||
// Old String buffer is not sufficient for RequestElement, allocate a new one
|
||||
//
|
||||
StringSize = (FormsetStorage->ConfigRequest != NULL) ? StrSize (FormsetStorage->ConfigRequest) : sizeof (CHAR16);
|
||||
NewStr = AllocateZeroPool (StringSize + CONFIG_REQUEST_STRING_INCREMENTAL * sizeof (CHAR16));
|
||||
MaxLen = StringSize / sizeof (CHAR16) + CONFIG_REQUEST_STRING_INCREMENTAL;
|
||||
NewStr = AllocateZeroPool (MaxLen * sizeof (CHAR16));
|
||||
ASSERT (NewStr != NULL);
|
||||
if (FormsetStorage->ConfigRequest != NULL) {
|
||||
CopyMem (NewStr, FormsetStorage->ConfigRequest, StringSize);
|
||||
@@ -751,7 +754,7 @@ InitializeRequestElement (
|
||||
FormsetStorage->SpareStrLen = CONFIG_REQUEST_STRING_INCREMENTAL;
|
||||
}
|
||||
|
||||
StrCat (FormsetStorage->ConfigRequest, RequestElement);
|
||||
StrCatS (FormsetStorage->ConfigRequest, MaxLen, RequestElement);
|
||||
FormsetStorage->ElementCount++;
|
||||
FormsetStorage->SpareStrLen -= StrLen;
|
||||
|
||||
@@ -782,6 +785,8 @@ InitializeRequestElement (
|
||||
ConfigInfo->Storage = FormsetStorage->BrowserStorage;
|
||||
InsertTailList(&Form->ConfigRequestHead, &ConfigInfo->Link);
|
||||
}
|
||||
StringSize = (ConfigInfo->ConfigRequest != NULL) ? StrSize (ConfigInfo->ConfigRequest) : sizeof (CHAR16);
|
||||
MaxLen = StringSize / sizeof (CHAR16) + ConfigInfo->SpareStrLen;
|
||||
|
||||
//
|
||||
// Append <RequestElement> to <ConfigRequest>
|
||||
@@ -790,8 +795,8 @@ InitializeRequestElement (
|
||||
//
|
||||
// Old String buffer is not sufficient for RequestElement, allocate a new one
|
||||
//
|
||||
StringSize = (ConfigInfo->ConfigRequest != NULL) ? StrSize (ConfigInfo->ConfigRequest) : sizeof (CHAR16);
|
||||
NewStr = AllocateZeroPool (StringSize + CONFIG_REQUEST_STRING_INCREMENTAL * sizeof (CHAR16));
|
||||
MaxLen = StringSize / sizeof (CHAR16) + CONFIG_REQUEST_STRING_INCREMENTAL;
|
||||
NewStr = AllocateZeroPool (MaxLen * sizeof (CHAR16));
|
||||
ASSERT (NewStr != NULL);
|
||||
if (ConfigInfo->ConfigRequest != NULL) {
|
||||
CopyMem (NewStr, ConfigInfo->ConfigRequest, StringSize);
|
||||
@@ -801,7 +806,7 @@ InitializeRequestElement (
|
||||
ConfigInfo->SpareStrLen = CONFIG_REQUEST_STRING_INCREMENTAL;
|
||||
}
|
||||
|
||||
StrCat (ConfigInfo->ConfigRequest, RequestElement);
|
||||
StrCatS (ConfigInfo->ConfigRequest, MaxLen, RequestElement);
|
||||
ConfigInfo->ElementCount++;
|
||||
ConfigInfo->SpareStrLen -= StrLen;
|
||||
return EFI_SUCCESS;
|
||||
|
@@ -635,6 +635,7 @@ ProcessStorage (
|
||||
CHAR16 *StrPtr;
|
||||
UINTN BufferSize;
|
||||
UINTN TmpSize;
|
||||
UINTN MaxLen;
|
||||
FORMSET_STORAGE *BrowserStorage;
|
||||
|
||||
if (RetrieveData) {
|
||||
@@ -660,7 +661,7 @@ ProcessStorage (
|
||||
// Copy the data if the input buffer is bigger enough.
|
||||
//
|
||||
if (*ResultsDataSize >= BufferSize) {
|
||||
StrCpy (*ResultsData, StrPtr);
|
||||
StrCpyS (*ResultsData, *ResultsDataSize / sizeof (CHAR16), StrPtr);
|
||||
}
|
||||
|
||||
*ResultsDataSize = BufferSize;
|
||||
@@ -673,12 +674,13 @@ ProcessStorage (
|
||||
ASSERT (BrowserStorage != NULL);
|
||||
TmpSize = StrLen (*ResultsData);
|
||||
BufferSize = (TmpSize + StrLen (BrowserStorage->ConfigHdr) + 2) * sizeof (CHAR16);
|
||||
MaxLen = BufferSize / sizeof (CHAR16);
|
||||
ConfigResp = AllocateZeroPool (BufferSize);
|
||||
ASSERT (ConfigResp != NULL);
|
||||
|
||||
StrCpy (ConfigResp, BrowserStorage->ConfigHdr);
|
||||
StrCat (ConfigResp, L"&");
|
||||
StrCat (ConfigResp, *ResultsData);
|
||||
StrCpyS (ConfigResp, MaxLen, BrowserStorage->ConfigHdr);
|
||||
StrCatS (ConfigResp, MaxLen, L"&");
|
||||
StrCatS (ConfigResp, MaxLen, *ResultsData);
|
||||
|
||||
//
|
||||
// Update Browser uncommited data
|
||||
@@ -1079,19 +1081,19 @@ NewStringCat (
|
||||
)
|
||||
{
|
||||
CHAR16 *NewString;
|
||||
UINTN TmpSize;
|
||||
UINTN MaxLen;
|
||||
|
||||
if (*Dest == NULL) {
|
||||
NewStringCpy (Dest, Src);
|
||||
return;
|
||||
}
|
||||
|
||||
TmpSize = StrSize (*Dest);
|
||||
NewString = AllocateZeroPool (TmpSize + StrSize (Src) - 1);
|
||||
MaxLen = ( StrSize (*Dest) + StrSize (Src) - 1) / sizeof (CHAR16);
|
||||
NewString = AllocateZeroPool (MaxLen * sizeof (CHAR16));
|
||||
ASSERT (NewString != NULL);
|
||||
|
||||
StrCpy (NewString, *Dest);
|
||||
StrCat (NewString, Src);
|
||||
StrCpyS (NewString, MaxLen, *Dest);
|
||||
StrCatS (NewString, MaxLen, Src);
|
||||
|
||||
FreePool (*Dest);
|
||||
*Dest = NewString;
|
||||
@@ -1441,7 +1443,7 @@ BufferToValue (
|
||||
DstBuf = (CHAR16 *) Dst;
|
||||
ZeroMem (TemStr, sizeof (TemStr));
|
||||
for (Index = 0; Index < LengthStr; Index += 4) {
|
||||
StrnCpy (TemStr, Value + Index, 4);
|
||||
StrnCpyS (TemStr, sizeof (TemStr) / sizeof (CHAR16), Value + Index, 4);
|
||||
DstBuf[Index/4] = (CHAR16) StrHexToUint64 (TemStr);
|
||||
}
|
||||
//
|
||||
@@ -1505,6 +1507,7 @@ GetQuestionValue (
|
||||
CHAR16 *Value;
|
||||
UINTN Length;
|
||||
BOOLEAN IsBufferStorage;
|
||||
UINTN MaxLen;
|
||||
|
||||
Status = EFI_SUCCESS;
|
||||
Value = NULL;
|
||||
@@ -1704,15 +1707,17 @@ GetQuestionValue (
|
||||
Length = StrLen (FormsetStorage->ConfigHdr);
|
||||
Length += StrLen (Question->VariableName) + 1;
|
||||
}
|
||||
ConfigRequest = AllocateZeroPool ((Length + 1) * sizeof (CHAR16));
|
||||
// Allocate buffer include '\0'
|
||||
MaxLen = Length + 1;
|
||||
ConfigRequest = AllocateZeroPool (MaxLen * sizeof (CHAR16));
|
||||
ASSERT (ConfigRequest != NULL);
|
||||
|
||||
StrCpy (ConfigRequest, FormsetStorage->ConfigHdr);
|
||||
StrCpyS (ConfigRequest, MaxLen, FormsetStorage->ConfigHdr);
|
||||
if (IsBufferStorage) {
|
||||
StrCat (ConfigRequest, Question->BlockName);
|
||||
StrCatS (ConfigRequest, MaxLen, Question->BlockName);
|
||||
} else {
|
||||
StrCat (ConfigRequest, L"&");
|
||||
StrCat (ConfigRequest, Question->VariableName);
|
||||
StrCatS (ConfigRequest, MaxLen, L"&");
|
||||
StrCatS (ConfigRequest, MaxLen, Question->VariableName);
|
||||
}
|
||||
|
||||
//
|
||||
@@ -1818,6 +1823,7 @@ SetQuestionValue (
|
||||
CHAR16 *TemString;
|
||||
UINTN Index;
|
||||
NAME_VALUE_NODE *Node;
|
||||
UINTN MaxLen;
|
||||
|
||||
Status = EFI_SUCCESS;
|
||||
Node = NULL;
|
||||
@@ -2002,17 +2008,18 @@ SetQuestionValue (
|
||||
}
|
||||
FormsetStorage = GetFstStgFromVarId(FormSet, Question->VarStoreId);
|
||||
ASSERT (FormsetStorage != NULL);
|
||||
ConfigResp = AllocateZeroPool ((StrLen (FormsetStorage->ConfigHdr) + Length + 1) * sizeof (CHAR16));
|
||||
MaxLen = StrLen (FormsetStorage->ConfigHdr) + Length + 1;
|
||||
ConfigResp = AllocateZeroPool (MaxLen * sizeof (CHAR16));
|
||||
ASSERT (ConfigResp != NULL);
|
||||
|
||||
StrCpy (ConfigResp, FormsetStorage->ConfigHdr);
|
||||
StrCpyS (ConfigResp, MaxLen, FormsetStorage->ConfigHdr);
|
||||
if (IsBufferStorage) {
|
||||
StrCat (ConfigResp, Question->BlockName);
|
||||
StrCat (ConfigResp, L"&VALUE=");
|
||||
StrCatS (ConfigResp, MaxLen, Question->BlockName);
|
||||
StrCatS (ConfigResp, MaxLen, L"&VALUE=");
|
||||
} else {
|
||||
StrCat (ConfigResp, L"&");
|
||||
StrCat (ConfigResp, Question->VariableName);
|
||||
StrCat (ConfigResp, L"=");
|
||||
StrCatS (ConfigResp, MaxLen, L"&");
|
||||
StrCatS (ConfigResp, MaxLen, Question->VariableName);
|
||||
StrCatS (ConfigResp, MaxLen, L"=");
|
||||
}
|
||||
|
||||
Value = ConfigResp + StrLen (ConfigResp);
|
||||
@@ -4887,8 +4894,11 @@ AppendConfigRequest (
|
||||
CHAR16 *NewStr;
|
||||
UINTN StringSize;
|
||||
UINTN StrLength;
|
||||
UINTN MaxLen;
|
||||
|
||||
StrLength = StrLen (RequestElement);
|
||||
StringSize = (*ConfigRequest != NULL) ? StrSize (*ConfigRequest) : sizeof (CHAR16);
|
||||
MaxLen = StringSize / sizeof (CHAR16) + *SpareStrLen;
|
||||
|
||||
//
|
||||
// Append <RequestElement> to <ConfigRequest>
|
||||
@@ -4897,8 +4907,8 @@ AppendConfigRequest (
|
||||
//
|
||||
// Old String buffer is not sufficient for RequestElement, allocate a new one
|
||||
//
|
||||
StringSize = (*ConfigRequest != NULL) ? StrSize (*ConfigRequest) : sizeof (CHAR16);
|
||||
NewStr = AllocateZeroPool (StringSize + CONFIG_REQUEST_STRING_INCREMENTAL * sizeof (CHAR16));
|
||||
MaxLen = StringSize / sizeof (CHAR16) + CONFIG_REQUEST_STRING_INCREMENTAL;
|
||||
NewStr = AllocateZeroPool (MaxLen * sizeof (CHAR16));
|
||||
ASSERT (NewStr != NULL);
|
||||
|
||||
if (*ConfigRequest != NULL) {
|
||||
@@ -4909,7 +4919,7 @@ AppendConfigRequest (
|
||||
*SpareStrLen = CONFIG_REQUEST_STRING_INCREMENTAL;
|
||||
}
|
||||
|
||||
StrCat (*ConfigRequest, RequestElement);
|
||||
StrCatS (*ConfigRequest, MaxLen, RequestElement);
|
||||
*SpareStrLen -= StrLength;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user