Description->Attributes = 1;\r
Description->BlockStart = FileStart / BlockSize;\r
Description->BlockEnd = Description->BlockStart + (FileSize / BlockSize);\r
- AsciiStrCpy (Description->Footer.Filename, FileName);\r
+ AsciiStrCpyS (Description->Footer.Filename,\r
+ sizeof Description->Footer.Filename, FileName);\r
\r
#ifdef MDE_CPU_ARM\r
Description->Footer.Offset = HW_IMAGE_FOOTER_OFFSET;\r
DiskIo = Instance->DiskIo;\r
BlockSize = Media->BlockSize;\r
\r
- UnicodeStrToAsciiStr (Info->FileName, AsciiFileName);\r
+ UnicodeStrToAsciiStrS (Info->FileName, AsciiFileName, MAX_NAME_LENGTH);\r
\r
// If the file doesn't exist then find a space for it\r
if (File->HwDescription.RegionCount == 0) {\r
CHAR16 *Separator;\r
CHAR8 *AsciiFileName;\r
EFI_FILE_INFO *Info;\r
+ UINTN AsciiFileNameSize;\r
\r
if (This == NULL) {\r
return EFI_INVALID_PARAMETER;\r
//\r
// BootMonFs interface requires ASCII filenames\r
//\r
- AsciiFileName = AllocatePool (StrLen (Path) + 1);\r
+ AsciiFileNameSize = StrLen (Path) + 1;\r
+ if (AsciiFileNameSize > MAX_NAME_LENGTH) {\r
+ AsciiFileNameSize = MAX_NAME_LENGTH;\r
+ }\r
+ AsciiFileName = AllocatePool (AsciiFileNameSize);\r
if (AsciiFileName == NULL) {\r
Status = EFI_OUT_OF_RESOURCES;\r
goto Error;\r
}\r
- UnicodeStrToAsciiStr (Path, AsciiFileName);\r
- if (AsciiStrSize (AsciiFileName) > MAX_NAME_LENGTH) {\r
- AsciiFileName[MAX_NAME_LENGTH - 1] = '\0';\r
- }\r
+ UnicodeStrToAsciiStrS (Path, AsciiFileName, AsciiFileNameSize);\r
\r
if ((AsciiFileName[0] == '\0') ||\r
(AsciiFileName[0] == '.' ) ) {\r
\r
Info->FileSize = BootMonFsGetImageLength (File);\r
Info->PhysicalSize = BootMonFsGetPhysicalSize (File);\r
- AsciiStrToUnicodeStr (AsciiFileName, Info->FileName);\r
+ AsciiStrToUnicodeStrS (AsciiFileName, Info->FileName, MAX_NAME_LENGTH);\r
\r
File->Info = Info;\r
Info = NULL;\r