Implementation for EFI_HII_STRING_PROTOCOL.\r
\r
\r
-Copyright (c) 2007 - 2012, Intel Corporation. All rights reserved.<BR>\r
+Copyright (c) 2007 - 2015, Intel Corporation. All rights reserved.<BR>\r
This program and the accompanying materials\r
are licensed and made available under the terms and conditions of the BSD License\r
which accompanies this distribution. The full text of the license may be found at\r
\r
case EFI_HII_SIBT_STRINGS_SCSU:\r
CopyMem (&StringCount, BlockHdr + sizeof (EFI_HII_STRING_BLOCK), sizeof (UINT16));\r
- StringTextPtr = BlockHdr + sizeof (EFI_HII_SIBT_STRINGS_SCSU_BLOCK) - sizeof (UINT8);\r
+ StringTextPtr = (UINT8*)((UINTN)BlockHdr + sizeof (EFI_HII_SIBT_STRINGS_SCSU_BLOCK) - sizeof (UINT8));\r
BlockSize += StringTextPtr - BlockHdr;\r
\r
for (Index = 0; Index < StringCount; Index++) {\r
case EFI_HII_SIBT_STRINGS_SCSU_FONT:\r
CopyMem (\r
&StringCount,\r
- BlockHdr + sizeof (EFI_HII_STRING_BLOCK) + sizeof (UINT8),\r
+ (UINT8*)((UINTN)BlockHdr + sizeof (EFI_HII_STRING_BLOCK) + sizeof (UINT8)),\r
sizeof (UINT16)\r
);\r
- StringTextPtr = BlockHdr + sizeof (EFI_HII_SIBT_STRINGS_SCSU_FONT_BLOCK) - sizeof (UINT8);\r
+ StringTextPtr = (UINT8*)((UINTN)BlockHdr + sizeof (EFI_HII_SIBT_STRINGS_SCSU_FONT_BLOCK) - sizeof (UINT8));\r
BlockSize += StringTextPtr - BlockHdr;\r
\r
for (Index = 0; Index < StringCount; Index++) {\r
BlockSize += Offset;\r
CopyMem (\r
&StringCount,\r
- BlockHdr + sizeof (EFI_HII_STRING_BLOCK) + sizeof (UINT8),\r
+ (UINT8*)((UINTN)BlockHdr + sizeof (EFI_HII_STRING_BLOCK) + sizeof (UINT8)),\r
sizeof (UINT16)\r
);\r
for (Index = 0; Index < StringCount; Index++) {\r
break;\r
\r
case EFI_HII_SIBT_SKIP1:\r
- SkipCount = (UINT16) (*(BlockHdr + sizeof (EFI_HII_STRING_BLOCK)));\r
+ SkipCount = (UINT16) (*(UINT8*)((UINTN)BlockHdr + sizeof (EFI_HII_STRING_BLOCK)));\r
CurrentStringId = (UINT16) (CurrentStringId + SkipCount);\r
BlockSize += sizeof (EFI_HII_SIBT_SKIP1_BLOCK);\r
break;\r
case EFI_HII_SIBT_EXT1:\r
CopyMem (\r
&Length8,\r
- BlockHdr + sizeof (EFI_HII_STRING_BLOCK) + sizeof (UINT8),\r
+ (UINT8*)((UINTN)BlockHdr + sizeof (EFI_HII_STRING_BLOCK) + sizeof (UINT8)),\r
sizeof (UINT8)\r
);\r
BlockSize += Length8;\r
//\r
BlockHdr += sizeof (EFI_HII_SIBT_EXT2_BLOCK);\r
CopyMem (&FontId, BlockHdr, sizeof (UINT8));\r
- BlockHdr += sizeof (UINT8);\r
+ BlockHdr ++;\r
CopyMem (&FontSize, BlockHdr, sizeof (UINT16));\r
BlockHdr += sizeof (UINT16);\r
CopyMem (&FontStyle, BlockHdr, sizeof (EFI_HII_FONT_STYLE));\r
case EFI_HII_SIBT_EXT4:\r
CopyMem (\r
&Length32,\r
- BlockHdr + sizeof (EFI_HII_STRING_BLOCK) + sizeof (UINT8),\r
+ (UINT8*)((UINTN)BlockHdr + sizeof (EFI_HII_STRING_BLOCK) + sizeof (UINT8)),\r
sizeof (UINT32)\r
);\r
\r
BlockPtr += sizeof (EFI_HII_SIBT_EXT2_BLOCK);\r
\r
*BlockPtr = LocalFont->FontId;\r
- BlockPtr += sizeof (UINT8);\r
+ BlockPtr ++;\r
CopyMem (BlockPtr, &GlobalFont->FontInfo->FontSize, sizeof (UINT16));\r
BlockPtr += sizeof (UINT16);\r
CopyMem (BlockPtr, &GlobalFont->FontInfo->FontStyle, sizeof (UINT32));\r
StringPackage->StringPkgHdr->StringInfoOffset = HeaderSize;\r
CopyMem (StringPackage->StringPkgHdr->LanguageWindow, mLanguageWindow, 16 * sizeof (CHAR16));\r
StringPackage->StringPkgHdr->LanguageName = 1;\r
- AsciiStrCpy (StringPackage->StringPkgHdr->Language, (CHAR8 *) Language);\r
+ AsciiStrCpyS (StringPackage->StringPkgHdr->Language, (HeaderSize - OFFSET_OF(EFI_HII_STRING_PACKAGE_HDR,Language)) / sizeof (CHAR8), (CHAR8 *) Language);\r
\r
//\r
// Calculate the length of the string blocks, including string block to record\r
*BlockPtr = EFI_HII_SIBT_STRING_UCS2_FONT;\r
BlockPtr += sizeof (EFI_HII_STRING_BLOCK);\r
*BlockPtr = LocalFont->FontId;\r
- BlockPtr += sizeof (UINT8);\r
+ BlockPtr ++;\r
CopyMem (BlockPtr, (EFI_STRING) String, StrSize ((EFI_STRING) String));\r
BlockPtr += StrSize ((EFI_STRING) String);\r
\r
BlockPtr += sizeof (EFI_HII_SIBT_EXT2_BLOCK);\r
\r
*BlockPtr = LocalFont->FontId;\r
- BlockPtr += sizeof (UINT8);\r
+ BlockPtr ++;\r
CopyMem (BlockPtr, &((EFI_FONT_INFO *) StringFontInfo)->FontSize, sizeof (UINT16));\r
BlockPtr += sizeof (UINT16);\r
CopyMem (BlockPtr, &((EFI_FONT_INFO *) StringFontInfo)->FontStyle, sizeof (EFI_HII_FONT_STYLE));\r
*BlockPtr = EFI_HII_SIBT_STRING_UCS2_FONT;\r
BlockPtr += sizeof (EFI_HII_STRING_BLOCK);\r
*BlockPtr = LocalFont->FontId;\r
- BlockPtr += sizeof (UINT8);\r
+ BlockPtr ++;\r
CopyMem (BlockPtr, (EFI_STRING) String, StrSize ((EFI_STRING) String));\r
BlockPtr += StrSize ((EFI_STRING) String);\r
\r
StringPackage = CR (Link, HII_STRING_PACKAGE_INSTANCE, StringEntry, HII_STRING_PACKAGE_SIGNATURE);\r
ResultSize += AsciiStrSize (StringPackage->StringPkgHdr->Language);\r
if (ResultSize <= *LanguagesSize) {\r
- AsciiStrCpy (Languages, StringPackage->StringPkgHdr->Language);\r
+ AsciiStrCpyS (Languages, *LanguagesSize / sizeof (CHAR8), StringPackage->StringPkgHdr->Language);\r
Languages += AsciiStrSize (StringPackage->StringPkgHdr->Language);\r
*(Languages - 1) = L';';\r
}\r
\r
ResultSize = AsciiStrSize (Languages);\r
if (ResultSize <= *SecondaryLanguagesSize) {\r
- AsciiStrCpy (SecondaryLanguages, Languages);\r
+ AsciiStrCpyS (SecondaryLanguages, *SecondaryLanguagesSize / sizeof (CHAR8), Languages);\r
} else {\r
*SecondaryLanguagesSize = ResultSize;\r
return EFI_BUFFER_TOO_SMALL;\r
StrLen = AsciiStrSize (Language1);\r
Lan1 = AllocateZeroPool (StrLen);\r
ASSERT (Lan1 != NULL);\r
- AsciiStrCpy(Lan1, Language1);\r
+ AsciiStrCpyS(Lan1, StrLen / sizeof (CHAR8), Language1);\r
AsciiHiiToLower (Lan1);\r
\r
StrLen = AsciiStrSize (Language2);\r
Lan2 = AllocateZeroPool (StrLen);\r
ASSERT (Lan2 != NULL);\r
- AsciiStrCpy(Lan2, Language2);\r
+ AsciiStrCpyS(Lan2, StrLen / sizeof (CHAR8), Language2);\r
AsciiHiiToLower (Lan2);\r
\r
//\r