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:
@@ -1670,6 +1670,7 @@ ConstructConfigHdr (
|
||||
CHAR16 *Name;
|
||||
CHAR8 *AsciiName;
|
||||
EFI_GUID *Guid;
|
||||
UINTN MaxLen;
|
||||
|
||||
ASSERT (OpCodeData != NULL);
|
||||
|
||||
@@ -1733,7 +1734,8 @@ ConstructConfigHdr (
|
||||
// GUID=<HexCh>32&NAME=<Char>NameLength&PATH=<HexChar>DevicePathSize <Null>
|
||||
// | 5 | sizeof (EFI_GUID) * 2 | 6 | NameStrLen*4 | 6 | DevicePathSize * 2 | 1 |
|
||||
//
|
||||
String = AllocateZeroPool ((5 + sizeof (EFI_GUID) * 2 + 6 + NameLength * 4 + 6 + DevicePathSize * 2 + 1) * sizeof (CHAR16));
|
||||
MaxLen = 5 + sizeof (EFI_GUID) * 2 + 6 + NameLength * 4 + 6 + DevicePathSize * 2 + 1;
|
||||
String = AllocateZeroPool (MaxLen * sizeof (CHAR16));
|
||||
if (String == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
@@ -1741,7 +1743,8 @@ ConstructConfigHdr (
|
||||
//
|
||||
// Start with L"GUID="
|
||||
//
|
||||
ReturnString = StrCpy (String, L"GUID=");
|
||||
StrCpyS (String, MaxLen, L"GUID=");
|
||||
ReturnString = String;
|
||||
String += StrLen (String);
|
||||
|
||||
if (Guid != NULL) {
|
||||
@@ -1756,7 +1759,7 @@ ConstructConfigHdr (
|
||||
//
|
||||
// Append L"&NAME="
|
||||
//
|
||||
StrCpy (String, L"&NAME=");
|
||||
StrCpyS (String, MaxLen, L"&NAME=");
|
||||
String += StrLen (String);
|
||||
|
||||
if (Name != NULL) {
|
||||
@@ -1771,7 +1774,7 @@ ConstructConfigHdr (
|
||||
//
|
||||
// Append L"&PATH="
|
||||
//
|
||||
StrCpy (String, L"&PATH=");
|
||||
StrCpyS (String, MaxLen, L"&PATH=");
|
||||
String += StrLen (String);
|
||||
|
||||
//
|
||||
@@ -1991,7 +1994,7 @@ ExtractConfigRequest (
|
||||
UINT16 Width;
|
||||
CHAR16 *ConfigHdr;
|
||||
CHAR16 *RequestElement;
|
||||
UINTN Length;
|
||||
UINTN MaxLen;
|
||||
CHAR16 *StringPtr;
|
||||
|
||||
ASSERT (DatabaseRecord != NULL && OpCodeData != NULL && ConfigRequest != NULL);
|
||||
@@ -2032,8 +2035,8 @@ ExtractConfigRequest (
|
||||
ConfigHdr = ConstructConfigHdr(Storage, DatabaseRecord->DriverHandle);
|
||||
ASSERT (ConfigHdr != NULL);
|
||||
|
||||
Length = (StrLen (ConfigHdr) + 1 + StrLen(RequestElement) + 1) * sizeof (CHAR16);
|
||||
*ConfigRequest = AllocatePool (Length);
|
||||
MaxLen = StrLen (ConfigHdr) + 1 + StrLen(RequestElement) + 1;
|
||||
*ConfigRequest = AllocatePool (MaxLen * sizeof (CHAR16));
|
||||
if (*ConfigRequest == NULL) {
|
||||
FreePool (ConfigHdr);
|
||||
FreePool (RequestElement);
|
||||
@@ -2041,13 +2044,13 @@ ExtractConfigRequest (
|
||||
}
|
||||
StringPtr = *ConfigRequest;
|
||||
|
||||
StrCpy (StringPtr, ConfigHdr);
|
||||
StrCpyS (StringPtr, MaxLen, ConfigHdr);
|
||||
StringPtr += StrLen (StringPtr);
|
||||
|
||||
*StringPtr = L'&';
|
||||
StringPtr++;
|
||||
|
||||
StrCpy (StringPtr, RequestElement);
|
||||
StrCpyS (StringPtr, MaxLen, RequestElement);
|
||||
StringPtr += StrLen (StringPtr);
|
||||
*StringPtr = L'\0';
|
||||
|
||||
@@ -2098,7 +2101,7 @@ ExtractConfigResp (
|
||||
UINT16 Width;
|
||||
CHAR16 *ConfigHdr;
|
||||
CHAR16 *RequestElement;
|
||||
UINTN Length;
|
||||
UINTN MaxLen;
|
||||
CHAR16 *StringPtr;
|
||||
|
||||
ASSERT ((DatabaseRecord != NULL) && (OpCodeData != NULL) && (ConfigResp != NULL) && (ValueElement != NULL));
|
||||
@@ -2140,8 +2143,8 @@ ExtractConfigResp (
|
||||
ConfigHdr = ConstructConfigHdr(Storage, DatabaseRecord->DriverHandle);
|
||||
ASSERT (ConfigHdr != NULL);
|
||||
|
||||
Length = (StrLen (ConfigHdr) + 1 + StrLen(RequestElement) + 1 + StrLen (L"VALUE=") + StrLen(ValueElement) + 1) * sizeof (CHAR16);
|
||||
*ConfigResp = AllocatePool (Length);
|
||||
MaxLen = StrLen (ConfigHdr) + 1 + StrLen(RequestElement) + 1 + StrLen (L"VALUE=") + StrLen(ValueElement) + 1;
|
||||
*ConfigResp = AllocatePool (MaxLen * sizeof (CHAR16));
|
||||
if (*ConfigResp == NULL) {
|
||||
FreePool (ConfigHdr);
|
||||
FreePool (RequestElement);
|
||||
@@ -2149,22 +2152,22 @@ ExtractConfigResp (
|
||||
}
|
||||
StringPtr = *ConfigResp;
|
||||
|
||||
StrCpy (StringPtr, ConfigHdr);
|
||||
StrCpyS (StringPtr, MaxLen, ConfigHdr);
|
||||
StringPtr += StrLen (StringPtr);
|
||||
|
||||
*StringPtr = L'&';
|
||||
StringPtr++;
|
||||
|
||||
StrCpy (StringPtr, RequestElement);
|
||||
StrCpyS (StringPtr, MaxLen, RequestElement);
|
||||
StringPtr += StrLen (StringPtr);
|
||||
|
||||
*StringPtr = L'&';
|
||||
StringPtr++;
|
||||
|
||||
StrCpy (StringPtr, L"VALUE=");
|
||||
StrCpyS (StringPtr, MaxLen, L"VALUE=");
|
||||
StringPtr += StrLen (StringPtr);
|
||||
|
||||
StrCpy (StringPtr, ValueElement);
|
||||
StrCpyS (StringPtr, MaxLen, ValueElement);
|
||||
StringPtr += StrLen (StringPtr);
|
||||
*StringPtr = L'\0';
|
||||
|
||||
@@ -2433,9 +2436,10 @@ GenerateKeywordResp (
|
||||
}
|
||||
|
||||
//
|
||||
// 2. Allocate the buffer and create the KeywordResp string.
|
||||
// 2. Allocate the buffer and create the KeywordResp string include '\0'.
|
||||
//
|
||||
*KeywordResp = AllocatePool ((RespStrLen + 1) * sizeof (CHAR16));
|
||||
RespStrLen += 1;
|
||||
*KeywordResp = AllocatePool (RespStrLen * sizeof (CHAR16));
|
||||
if (*KeywordResp == NULL) {
|
||||
if (UnicodeNameSpace != NULL) {
|
||||
FreePool (UnicodeNameSpace);
|
||||
@@ -2448,36 +2452,36 @@ GenerateKeywordResp (
|
||||
//
|
||||
// 2.1 Copy NameSpaceId section.
|
||||
//
|
||||
StrCpy (RespStr, L"NAMESPACE=");
|
||||
StrCpyS (RespStr, RespStrLen, L"NAMESPACE=");
|
||||
RespStr += StrLen (RespStr);
|
||||
StrCpy (RespStr, UnicodeNameSpace);
|
||||
StrCpyS (RespStr, RespStrLen, UnicodeNameSpace);
|
||||
RespStr += StrLen (RespStr);
|
||||
|
||||
//
|
||||
// 2.2 Copy PathHdr section.
|
||||
//
|
||||
StrCpy (RespStr, PathHdr);
|
||||
StrCpyS (RespStr, RespStrLen, PathHdr);
|
||||
RespStr += StrLen (RespStr);
|
||||
|
||||
//
|
||||
// 2.3 Copy Keyword section.
|
||||
//
|
||||
StrCpy (RespStr, L"KEYWORD=");
|
||||
StrCpyS (RespStr, RespStrLen, L"KEYWORD=");
|
||||
RespStr += StrLen (RespStr);
|
||||
StrCpy (RespStr, KeywordData);
|
||||
StrCpyS (RespStr, RespStrLen, KeywordData);
|
||||
RespStr += StrLen (RespStr);
|
||||
|
||||
//
|
||||
// 2.4 Copy the Value section.
|
||||
//
|
||||
StrCpy (RespStr, ValueStr);
|
||||
StrCpyS (RespStr, RespStrLen, ValueStr);
|
||||
RespStr += StrLen (RespStr);
|
||||
|
||||
//
|
||||
// 2.5 Copy ReadOnly section if exist.
|
||||
//
|
||||
if (ReadOnly) {
|
||||
StrCpy (RespStr, L"&READONLY");
|
||||
StrCpyS (RespStr, RespStrLen, L"&READONLY");
|
||||
RespStr += StrLen (RespStr);
|
||||
}
|
||||
|
||||
@@ -2538,7 +2542,7 @@ MergeToMultiKeywordResp (
|
||||
*StringPtr = L'&';
|
||||
StringPtr++;
|
||||
|
||||
StrCpy (StringPtr, *KeywordResp);
|
||||
StrCpyS (StringPtr, MultiKeywordRespLen / sizeof (CHAR16), *KeywordResp);
|
||||
|
||||
return EFI_SUCCESS;
|
||||
}
|
||||
|
@@ -1,7 +1,7 @@
|
||||
/** @file
|
||||
Implementation of interfaces function for EFI_HII_CONFIG_ROUTING_PROTOCOL.
|
||||
|
||||
Copyright (c) 2007 - 2014, Intel Corporation. All rights reserved.<BR>
|
||||
Copyright (c) 2007 - 2015, Intel Corporation. All rights reserved.<BR>
|
||||
This program and the accompanying materials
|
||||
are licensed and made available under the terms and conditions of the BSD License
|
||||
which accompanies this distribution. The full text of the license may be found at
|
||||
@@ -252,8 +252,7 @@ GenerateSubStr (
|
||||
Str = AllocateZeroPool (Length * sizeof (CHAR16));
|
||||
ASSERT (Str != NULL);
|
||||
|
||||
StrCpy (Str, String);
|
||||
Length = (BufferLen * 2 + 1) * sizeof (CHAR16);
|
||||
StrCpyS (Str, Length, String);
|
||||
|
||||
StringHeader = Str + StrLen (String);
|
||||
TemString = (CHAR16 *) StringHeader;
|
||||
@@ -297,7 +296,7 @@ GenerateSubStr (
|
||||
//
|
||||
// Convert the uppercase to lowercase since <HexAf> is defined in lowercase format.
|
||||
//
|
||||
StrCat (Str, L"&");
|
||||
StrCatS (Str, Length, L"&");
|
||||
HiiToLower (Str);
|
||||
|
||||
*SubStr = Str;
|
||||
@@ -392,6 +391,7 @@ AppendToMultiString (
|
||||
{
|
||||
UINTN AppendStringSize;
|
||||
UINTN MultiStringSize;
|
||||
UINTN MaxLen;
|
||||
|
||||
if (MultiString == NULL || *MultiString == NULL || AppendString == NULL) {
|
||||
return EFI_INVALID_PARAMETER;
|
||||
@@ -399,6 +399,7 @@ AppendToMultiString (
|
||||
|
||||
AppendStringSize = StrSize (AppendString);
|
||||
MultiStringSize = StrSize (*MultiString);
|
||||
MaxLen = MAX_STRING_LENGTH / sizeof (CHAR16);
|
||||
|
||||
//
|
||||
// Enlarge the buffer each time when length exceeds MAX_STRING_LENGTH.
|
||||
@@ -410,12 +411,13 @@ AppendToMultiString (
|
||||
MultiStringSize + AppendStringSize,
|
||||
(VOID *) (*MultiString)
|
||||
);
|
||||
MaxLen = (MultiStringSize + AppendStringSize) / sizeof (CHAR16);
|
||||
ASSERT (*MultiString != NULL);
|
||||
}
|
||||
//
|
||||
// Append the incoming string
|
||||
//
|
||||
StrCat (*MultiString, AppendString);
|
||||
StrCatS (*MultiString, MaxLen, AppendString);
|
||||
|
||||
return EFI_SUCCESS;
|
||||
}
|
||||
@@ -536,6 +538,8 @@ MergeDefaultString (
|
||||
EFI_STRING AltConfigHdr;
|
||||
UINTN HeaderLength;
|
||||
UINTN SizeAltCfgResp;
|
||||
UINTN MaxLen;
|
||||
UINTN TotalSize;
|
||||
|
||||
if (*AltCfgResp == NULL) {
|
||||
return EFI_INVALID_PARAMETER;
|
||||
@@ -572,13 +576,14 @@ MergeDefaultString (
|
||||
// Construct AltConfigHdr string "&<ConfigHdr>&ALTCFG=XXXX\0"
|
||||
// |1| StrLen (ConfigHdr) | 8 | 4 | 1 |
|
||||
//
|
||||
AltConfigHdr = AllocateZeroPool ((1 + HeaderLength + 8 + 4 + 1) * sizeof (CHAR16));
|
||||
MaxLen = 1 + HeaderLength + 8 + 4 + 1;
|
||||
AltConfigHdr = AllocateZeroPool (MaxLen * sizeof (CHAR16));
|
||||
if (AltConfigHdr == NULL) {
|
||||
return EFI_OUT_OF_RESOURCES;
|
||||
}
|
||||
StrCpy (AltConfigHdr, L"&");
|
||||
StrnCat (AltConfigHdr, *AltCfgResp, HeaderLength);
|
||||
StrCat (AltConfigHdr, L"&ALTCFG=");
|
||||
StrCpyS (AltConfigHdr, MaxLen, L"&");
|
||||
StrnCatS (AltConfigHdr, MaxLen, *AltCfgResp, HeaderLength);
|
||||
StrCatS (AltConfigHdr, MaxLen, L"&ALTCFG=");
|
||||
HeaderLength = StrLen (AltConfigHdr);
|
||||
|
||||
StringPtrDefault = StrStr (DefaultAltCfgResp, AltConfigHdr);
|
||||
@@ -586,7 +591,7 @@ MergeDefaultString (
|
||||
//
|
||||
// Get AltCfg Name
|
||||
//
|
||||
StrnCat (AltConfigHdr, StringPtrDefault + HeaderLength, 4);
|
||||
StrnCatS (AltConfigHdr, MaxLen, StringPtrDefault + HeaderLength, 4);
|
||||
StringPtr = StrStr (*AltCfgResp, AltConfigHdr);
|
||||
|
||||
//
|
||||
@@ -595,34 +600,35 @@ MergeDefaultString (
|
||||
if (StringPtr == NULL) {
|
||||
StringPtrEnd = StrStr (StringPtrDefault + 1, L"&GUID");
|
||||
SizeAltCfgResp = StrSize (*AltCfgResp);
|
||||
TotalSize = SizeAltCfgResp + StrSize (StringPtrDefault);
|
||||
if (StringPtrEnd == NULL) {
|
||||
//
|
||||
// No more default string is found.
|
||||
//
|
||||
*AltCfgResp = (EFI_STRING) ReallocatePool (
|
||||
SizeAltCfgResp,
|
||||
SizeAltCfgResp + StrSize (StringPtrDefault),
|
||||
TotalSize,
|
||||
(VOID *) (*AltCfgResp)
|
||||
);
|
||||
if (*AltCfgResp == NULL) {
|
||||
FreePool (AltConfigHdr);
|
||||
return EFI_OUT_OF_RESOURCES;
|
||||
}
|
||||
StrCat (*AltCfgResp, StringPtrDefault);
|
||||
StrCatS (*AltCfgResp, TotalSize / sizeof (CHAR16), StringPtrDefault);
|
||||
break;
|
||||
} else {
|
||||
TempChar = *StringPtrEnd;
|
||||
*StringPtrEnd = L'\0';
|
||||
*AltCfgResp = (EFI_STRING) ReallocatePool (
|
||||
SizeAltCfgResp,
|
||||
SizeAltCfgResp + StrSize (StringPtrDefault),
|
||||
TotalSize,
|
||||
(VOID *) (*AltCfgResp)
|
||||
);
|
||||
if (*AltCfgResp == NULL) {
|
||||
FreePool (AltConfigHdr);
|
||||
return EFI_OUT_OF_RESOURCES;
|
||||
}
|
||||
StrCat (*AltCfgResp, StringPtrDefault);
|
||||
StrCatS (*AltCfgResp, TotalSize / sizeof (CHAR16), StringPtrDefault);
|
||||
*StringPtrEnd = TempChar;
|
||||
}
|
||||
}
|
||||
@@ -1188,8 +1194,8 @@ GetVarStoreType (
|
||||
Status = EFI_OUT_OF_RESOURCES;
|
||||
goto Done;
|
||||
}
|
||||
StrCpy (TempStr, GuidStr);
|
||||
StrCat (TempStr, NameStr);
|
||||
StrCpyS (TempStr, LengthString, GuidStr);
|
||||
StrCatS (TempStr, LengthString, NameStr);
|
||||
if (ConfigHdr == NULL || StrnCmp (ConfigHdr, TempStr, StrLen (TempStr)) == 0) {
|
||||
*EfiVarStore = (EFI_IFR_VARSTORE_EFI *) AllocateZeroPool (IfrOpHdr->Length);
|
||||
if (*EfiVarStore == NULL) {
|
||||
@@ -1304,8 +1310,8 @@ IsThisVarstore (
|
||||
goto Done;
|
||||
}
|
||||
|
||||
StrCpy (TempStr, GuidStr);
|
||||
StrCat (TempStr, NameStr);
|
||||
StrCpyS (TempStr, LengthString, GuidStr);
|
||||
StrCatS (TempStr, LengthString, NameStr);
|
||||
|
||||
if (ConfigHdr == NULL || StrnCmp (ConfigHdr, TempStr, StrLen (TempStr)) == 0) {
|
||||
RetVal = TRUE;
|
||||
@@ -2666,7 +2672,7 @@ GenerateConfigRequest (
|
||||
//
|
||||
// Start with <ConfigHdr>
|
||||
//
|
||||
StrCpy (StringPtr, ConfigHdr);
|
||||
StrCpyS (StringPtr, Length, ConfigHdr);
|
||||
StringPtr += StrLen (StringPtr);
|
||||
|
||||
//
|
||||
@@ -2765,12 +2771,12 @@ GenerateHdr (
|
||||
Status = EFI_OUT_OF_RESOURCES;
|
||||
goto Done;
|
||||
}
|
||||
StrCpy (*ConfigHdr, GuidStr);
|
||||
StrCat (*ConfigHdr, NameStr);
|
||||
StrCpyS (*ConfigHdr, Length, GuidStr);
|
||||
StrCatS (*ConfigHdr, Length, NameStr);
|
||||
if (VarStorageData->Name == NULL) {
|
||||
StrCat (*ConfigHdr, L"&");
|
||||
StrCatS (*ConfigHdr, Length, L"&");
|
||||
}
|
||||
StrCat (*ConfigHdr, PathStr);
|
||||
StrCatS (*ConfigHdr, Length, PathStr);
|
||||
|
||||
//
|
||||
// Remove the last character L'&'
|
||||
@@ -2934,7 +2940,7 @@ GenerateAltConfigResp (
|
||||
//
|
||||
// Start with <ConfigHdr>
|
||||
//
|
||||
StrCpy (StringPtr, ConfigHdr);
|
||||
StrCpyS (StringPtr, Length, ConfigHdr);
|
||||
StringPtr += StrLen (StringPtr);
|
||||
|
||||
for (Link = DefaultIdArray->Entry.ForwardLink; Link != &DefaultIdArray->Entry; Link = Link->ForwardLink) {
|
||||
@@ -4612,8 +4618,8 @@ HiiBlockToConfig (
|
||||
*(ConfigElement + (StringPtr - TmpPtr)) = L'&';
|
||||
}
|
||||
*(ConfigElement + (StringPtr - TmpPtr) + 1) = 0;
|
||||
StrCat (ConfigElement, L"VALUE=");
|
||||
StrCat (ConfigElement, ValueStr);
|
||||
StrCatS (ConfigElement, Length, L"VALUE=");
|
||||
StrCatS (ConfigElement, Length, ValueStr);
|
||||
|
||||
AppendToMultiString (Config, ConfigElement);
|
||||
|
||||
@@ -5130,8 +5136,8 @@ Exit:
|
||||
if (*AltCfgResp == NULL) {
|
||||
Status = EFI_OUT_OF_RESOURCES;
|
||||
} else {
|
||||
StrnCpy (*AltCfgResp, HdrStart, HdrEnd - HdrStart);
|
||||
StrCat (*AltCfgResp, Result);
|
||||
StrnCpyS (*AltCfgResp, Length, HdrStart, HdrEnd - HdrStart);
|
||||
StrCatS (*AltCfgResp, Length, Result);
|
||||
Status = EFI_SUCCESS;
|
||||
}
|
||||
}
|
||||
|
@@ -1,7 +1,7 @@
|
||||
/** @file
|
||||
Implementation for EFI_HII_DATABASE_PROTOCOL.
|
||||
|
||||
Copyright (c) 2007 - 2014, Intel Corporation. All rights reserved.<BR>
|
||||
Copyright (c) 2007 - 2015, Intel Corporation. All rights reserved.<BR>
|
||||
This program and the accompanying materials
|
||||
are licensed and made available under the terms and conditions of the BSD License
|
||||
which accompanies this distribution. The full text of the license may be found at
|
||||
@@ -798,7 +798,7 @@ InsertStringPackage (
|
||||
if (Language == NULL) {
|
||||
return EFI_OUT_OF_RESOURCES;
|
||||
}
|
||||
AsciiStrCpy (Language, (CHAR8 *) PackageHdr + HeaderSize - LanguageSize);
|
||||
AsciiStrCpyS (Language, LanguageSize / sizeof (CHAR8), (CHAR8 *) PackageHdr + HeaderSize - LanguageSize);
|
||||
for (Link = PackageList->StringPkgHdr.ForwardLink; Link != &PackageList->StringPkgHdr; Link = Link->ForwardLink) {
|
||||
StringPackage = CR (Link, HII_STRING_PACKAGE_INSTANCE, StringEntry, HII_STRING_PACKAGE_SIGNATURE);
|
||||
if (HiiCompareLanguage (Language, StringPackage->StringPkgHdr->Language)) {
|
||||
@@ -1182,7 +1182,7 @@ InsertFontPackage (
|
||||
}
|
||||
FontInfo->FontStyle = FontPkgHdr->FontStyle;
|
||||
FontInfo->FontSize = FontPkgHdr->Cell.Height;
|
||||
StrCpy (FontInfo->FontName, FontPkgHdr->FontFamily);
|
||||
StrCpyS (FontInfo->FontName, sizeof (FontInfo->FontName) / sizeof (CHAR16), FontPkgHdr->FontFamily);
|
||||
|
||||
if (IsFontInfoExisted (Private, FontInfo, NULL, NULL, NULL)) {
|
||||
Status = EFI_UNSUPPORTED;
|
||||
|
@@ -2,7 +2,7 @@
|
||||
Implementation for EFI_HII_FONT_PROTOCOL.
|
||||
|
||||
|
||||
Copyright (c) 2007 - 2014, Intel Corporation. All rights reserved.<BR>
|
||||
Copyright (c) 2007 - 2015, Intel Corporation. All rights reserved.<BR>
|
||||
This program and the accompanying materials
|
||||
are licensed and made available under the terms and conditions of the BSD License
|
||||
which accompanies this distribution. The full text of the license may be found at
|
||||
@@ -933,16 +933,18 @@ SaveFontName (
|
||||
)
|
||||
{
|
||||
UINTN FontInfoLen;
|
||||
UINTN NameSize;
|
||||
|
||||
ASSERT (FontName != NULL && FontInfo != NULL);
|
||||
|
||||
FontInfoLen = sizeof (EFI_FONT_INFO) - sizeof (CHAR16) + StrSize (FontName);
|
||||
NameSize = StrSize (FontName);
|
||||
FontInfoLen = sizeof (EFI_FONT_INFO) - sizeof (CHAR16) + NameSize;
|
||||
*FontInfo = (EFI_FONT_INFO *) AllocateZeroPool (FontInfoLen);
|
||||
if (*FontInfo == NULL) {
|
||||
return EFI_OUT_OF_RESOURCES;
|
||||
}
|
||||
|
||||
StrCpy ((*FontInfo)->FontName, FontName);
|
||||
StrCpyS ((*FontInfo)->FontName, NameSize / sizeof (CHAR16), FontName);
|
||||
return EFI_SUCCESS;
|
||||
}
|
||||
|
||||
@@ -971,6 +973,7 @@ GetSystemFont (
|
||||
{
|
||||
EFI_FONT_DISPLAY_INFO *Info;
|
||||
UINTN InfoSize;
|
||||
UINTN NameSize;
|
||||
|
||||
if (Private == NULL || Private->Signature != HII_DATABASE_PRIVATE_DATA_SIGNATURE) {
|
||||
return EFI_INVALID_PARAMETER;
|
||||
@@ -982,7 +985,8 @@ GetSystemFont (
|
||||
//
|
||||
// The standard font always has the name "sysdefault".
|
||||
//
|
||||
InfoSize = sizeof (EFI_FONT_DISPLAY_INFO) - sizeof (CHAR16) + StrSize (L"sysdefault");
|
||||
NameSize = StrSize (L"sysdefault");
|
||||
InfoSize = sizeof (EFI_FONT_DISPLAY_INFO) - sizeof (CHAR16) + NameSize;
|
||||
Info = (EFI_FONT_DISPLAY_INFO *) AllocateZeroPool (InfoSize);
|
||||
if (Info == NULL) {
|
||||
return EFI_OUT_OF_RESOURCES;
|
||||
@@ -993,7 +997,7 @@ GetSystemFont (
|
||||
Info->FontInfoMask = EFI_FONT_INFO_SYS_FONT | EFI_FONT_INFO_SYS_SIZE | EFI_FONT_INFO_SYS_STYLE;
|
||||
Info->FontInfo.FontStyle = 0;
|
||||
Info->FontInfo.FontSize = EFI_GLYPH_HEIGHT;
|
||||
StrCpy (Info->FontInfo.FontName, L"sysdefault");
|
||||
StrCpyS (Info->FontInfo.FontName, NameSize / sizeof (CHAR16), L"sysdefault");
|
||||
|
||||
*FontInfo = Info;
|
||||
if (FontInfoSize != NULL) {
|
||||
@@ -2310,6 +2314,7 @@ HiiStringIdToImage (
|
||||
EFI_STRING String;
|
||||
UINTN StringSize;
|
||||
UINTN FontLen;
|
||||
UINTN NameSize;
|
||||
EFI_FONT_INFO *StringFontInfo;
|
||||
EFI_FONT_DISPLAY_INFO *NewStringInfo;
|
||||
CHAR8 TempSupportedLanguages;
|
||||
@@ -2432,7 +2437,8 @@ HiiStringIdToImage (
|
||||
// StringFontInfo equals NULL means system default font attaches with the string block.
|
||||
//
|
||||
if (StringFontInfo != NULL && IsSystemFontInfo (Private, (EFI_FONT_DISPLAY_INFO *) StringInfo, NULL, NULL)) {
|
||||
FontLen = sizeof (EFI_FONT_DISPLAY_INFO) - sizeof (CHAR16) + StrSize (StringFontInfo->FontName);
|
||||
NameSize = StrSize (StringFontInfo->FontName);
|
||||
FontLen = sizeof (EFI_FONT_DISPLAY_INFO) - sizeof (CHAR16) + NameSize;
|
||||
NewStringInfo = AllocateZeroPool (FontLen);
|
||||
if (NewStringInfo == NULL) {
|
||||
Status = EFI_OUT_OF_RESOURCES;
|
||||
@@ -2441,7 +2447,7 @@ HiiStringIdToImage (
|
||||
NewStringInfo->FontInfoMask = EFI_FONT_INFO_SYS_FORE_COLOR | EFI_FONT_INFO_SYS_BACK_COLOR;
|
||||
NewStringInfo->FontInfo.FontStyle = StringFontInfo->FontStyle;
|
||||
NewStringInfo->FontInfo.FontSize = StringFontInfo->FontSize;
|
||||
StrCpy (NewStringInfo->FontInfo.FontName, StringFontInfo->FontName);
|
||||
StrCpyS (NewStringInfo->FontInfo.FontName, NameSize / sizeof (CHAR16), StringFontInfo->FontName);
|
||||
|
||||
Status = HiiStringToImage (
|
||||
This,
|
||||
|
@@ -1333,7 +1333,7 @@ HiiNewString (
|
||||
StringPackage->StringPkgHdr->StringInfoOffset = HeaderSize;
|
||||
CopyMem (StringPackage->StringPkgHdr->LanguageWindow, mLanguageWindow, 16 * sizeof (CHAR16));
|
||||
StringPackage->StringPkgHdr->LanguageName = 1;
|
||||
AsciiStrCpy (StringPackage->StringPkgHdr->Language, (CHAR8 *) Language);
|
||||
AsciiStrCpyS (StringPackage->StringPkgHdr->Language, sizeof(StringPackage->StringPkgHdr->Language) / sizeof (CHAR8), (CHAR8 *) Language);
|
||||
|
||||
//
|
||||
// Calculate the length of the string blocks, including string block to record
|
||||
@@ -1842,7 +1842,7 @@ HiiGetLanguages (
|
||||
}
|
||||
ResultSize += AsciiStrSize (StringPackage->StringPkgHdr->Language);
|
||||
if (ResultSize <= *LanguagesSize) {
|
||||
AsciiStrCpy (Languages, StringPackage->StringPkgHdr->Language);
|
||||
AsciiStrCpyS (Languages, *LanguagesSize / sizeof (CHAR8), StringPackage->StringPkgHdr->Language);
|
||||
Languages += AsciiStrSize (StringPackage->StringPkgHdr->Language);
|
||||
*(Languages - 1) = L';';
|
||||
}
|
||||
@@ -1959,7 +1959,7 @@ HiiGetSecondaryLanguages (
|
||||
|
||||
ResultSize = AsciiStrSize (Languages);
|
||||
if (ResultSize <= *SecondaryLanguagesSize) {
|
||||
AsciiStrCpy (SecondaryLanguages, Languages);
|
||||
AsciiStrCpyS (SecondaryLanguages, *SecondaryLanguagesSize / sizeof (CHAR8), Languages);
|
||||
} else {
|
||||
*SecondaryLanguagesSize = ResultSize;
|
||||
return EFI_BUFFER_TOO_SMALL;
|
||||
@@ -2024,13 +2024,13 @@ HiiCompareLanguage (
|
||||
StrLen = AsciiStrSize (Language1);
|
||||
Lan1 = AllocateZeroPool (StrLen);
|
||||
ASSERT (Lan1 != NULL);
|
||||
AsciiStrCpy(Lan1, Language1);
|
||||
AsciiStrCpyS(Lan1, StrLen / sizeof (CHAR8), Language1);
|
||||
AsciiHiiToLower (Lan1);
|
||||
|
||||
StrLen = AsciiStrSize (Language2);
|
||||
Lan2 = AllocateZeroPool (StrLen);
|
||||
ASSERT (Lan2 != NULL);
|
||||
AsciiStrCpy(Lan2, Language2);
|
||||
AsciiStrCpyS(Lan2, StrLen / sizeof (CHAR8), Language2);
|
||||
AsciiHiiToLower (Lan2);
|
||||
|
||||
//
|
||||
|
Reference in New Issue
Block a user