X-Git-Url: https://git.proxmox.com/?a=blobdiff_plain;f=MdeModulePkg%2FUniversal%2FSetupBrowserDxe%2FIfrParse.c;h=953e3a50717be2c936e8eaded027ec00670d2ac5;hb=5ad66ec6925f1564137752be4d8656d462ebeaf2;hp=45405609c14f9d4cb6deafcf91639d04dce4afdc;hpb=e9da7deaa475fee947760d49e46c74bae90449ad;p=mirror_edk2.git diff --git a/MdeModulePkg/Universal/SetupBrowserDxe/IfrParse.c b/MdeModulePkg/Universal/SetupBrowserDxe/IfrParse.c index 45405609c1..953e3a5071 100644 --- a/MdeModulePkg/Universal/SetupBrowserDxe/IfrParse.c +++ b/MdeModulePkg/Universal/SetupBrowserDxe/IfrParse.c @@ -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 to @@ -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 to @@ -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;