/*++ @file\r
Support OS native directory access.\r
\r
-Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>\r
+Copyright (c) 2006 - 2019, Intel Corporation. All rights reserved.<BR>\r
SPDX-License-Identifier: BSD-2-Clause-Patent\r
\r
\r
goto Done;\r
}\r
\r
- StrCpy (PrivateFile->FilePath, Private->FilePath);\r
- StrCpy (PrivateFile->FileName, PrivateFile->FilePath);\r
+ StrCpyS (PrivateFile->FilePath,\r
+ StrSize (Private->FilePath) / sizeof (CHAR16),\r
+ Private->FilePath\r
+ );\r
+ StrCpyS (PrivateFile->FileName,\r
+ StrSize (Private->FilePath) / sizeof (CHAR16),\r
+ PrivateFile->FilePath\r
+ );\r
PrivateFile->Signature = WIN_NT_EFI_FILE_PRIVATE_SIGNATURE;\r
PrivateFile->Thunk = Private->Thunk;\r
PrivateFile->SimpleFileSystem = This;\r
if (TempFileName == NULL) {\r
goto Done;\r
}\r
- StrCpy (TempFileName, PrivateFile->FilePath);\r
- StrCat (TempFileName, L"\\*");\r
+ StrCpyS (TempFileName, Size / sizeof (CHAR16), PrivateFile->FilePath);\r
+ StrCatS (TempFileName, Size / sizeof (CHAR16), L"\\*");\r
\r
PrivateFile->LHandle = FindFirstFile (TempFileName, &PrivateFile->FindBuf);\r
FreePool (TempFileName);\r
} else {\r
Offset = SlashPos - *FileName;\r
Token = AllocateZeroPool ((Offset + 1) * sizeof (CHAR16));\r
- StrnCpy (Token, *FileName, Offset);\r
+ StrnCpyS (Token, Offset + 1, *FileName, Offset);\r
//\r
// Point *FileName to the next character after L'\'.\r
//\r
if (TempFileName == NULL) {\r
return EFI_OUT_OF_RESOURCES;\r
}\r
- StrCpy (TempFileName, FileName);\r
+ StrCpyS (TempFileName, StrSize (FileName) / sizeof (CHAR16), FileName);\r
FileName = TempFileName;\r
\r
if (FileName[StrLen (FileName) - 1] == L'\\') {\r
}\r
\r
if (PrivateFile->IsDirectoryPath) {\r
- StrCpy (NewPrivateFile->FilePath, PrivateFile->FileName);\r
+ StrCpyS (\r
+ NewPrivateFile->FilePath,\r
+ StrSize (PrivateFile->FileName) / sizeof (CHAR16),\r
+ PrivateFile->FileName\r
+ );\r
} else {\r
- StrCpy (NewPrivateFile->FilePath, PrivateFile->FilePath);\r
+ StrCpyS (\r
+ NewPrivateFile->FilePath,\r
+ StrSize (PrivateFile->FileName) / sizeof (CHAR16),\r
+ PrivateFile->FilePath\r
+ );\r
}\r
\r
Size = StrSize (NewPrivateFile->FilePath);\r
}\r
\r
if (*FileName == L'\\') {\r
- StrCpy (NewPrivateFile->FileName, PrivateRoot->FilePath);\r
- StrCat (NewPrivateFile->FileName, L"\\");\r
- StrCat (NewPrivateFile->FileName, FileName + 1);\r
+ StrCpyS (NewPrivateFile->FileName, Size / sizeof (CHAR16), PrivateRoot->FilePath);\r
+ StrCatS (NewPrivateFile->FileName, Size / sizeof (CHAR16), L"\\");\r
+ StrCatS (NewPrivateFile->FileName, Size / sizeof (CHAR16), FileName + 1);\r
} else {\r
- StrCpy (NewPrivateFile->FileName, NewPrivateFile->FilePath);\r
+ StrCpyS (NewPrivateFile->FileName, Size / sizeof (CHAR16), NewPrivateFile->FilePath);\r
if (StrCmp (FileName, L"") != 0) {\r
//\r
// In case the filename becomes empty, especially after trimming dots and blanks\r
//\r
- StrCat (NewPrivateFile->FileName, L"\\");\r
- StrCat (NewPrivateFile->FileName, FileName);\r
+ StrCatS (NewPrivateFile->FileName, Size / sizeof (CHAR16), L"\\");\r
+ StrCatS (NewPrivateFile->FileName, Size / sizeof (CHAR16), FileName);\r
}\r
}\r
\r
goto Done;\r
}\r
\r
- StrCpy (NewPrivateFile->FilePath, NewPrivateFile->FileName);\r
+ StrCpyS (\r
+ NewPrivateFile->FilePath,\r
+ StrSize (NewPrivateFile->FileName) / sizeof (CHAR16),\r
+ NewPrivateFile->FileName\r
+ );\r
if (TempChar != 0) {\r
*(RealFileName - 1) = TempChar;\r
}\r
goto Done;\r
}\r
\r
- StrCpy (TempFileName, NewPrivateFile->FileName);\r
+ StrCpyS (TempFileName, Size / sizeof (CHAR16), NewPrivateFile->FileName);\r
\r
if ((OpenMode & EFI_FILE_MODE_CREATE)) {\r
//\r
//\r
// Find the first file under it\r
//\r
- StrCat (TempFileName, L"\\*");\r
+ StrCatS (TempFileName, Size / sizeof (CHAR16), L"\\*");\r
NewPrivateFile->LHandle = FindFirstFile (TempFileName, &NewPrivateFile->FindBuf);\r
FreePool (TempFileName);\r
\r
goto Done;\r
}\r
\r
- StrCpy (FileName, PrivateFile->FileName);\r
- StrCat (FileName, L"\\*");\r
+ StrCpyS (FileName, Size / sizeof (CHAR16), PrivateFile->FileName);\r
+ StrCatS (FileName, Size / sizeof (CHAR16), L"\\*");\r
\r
if (PrivateFile->LHandle != INVALID_HANDLE_VALUE) {\r
FindClose (PrivateFile->LHandle);\r
goto Done;\r
}\r
\r
- StrCpy (DriveName, PrivateFile->FilePath);\r
+ StrCpyS (\r
+ DriveName,\r
+ (StrSize (PrivateFile->FilePath) + 1) / sizeof (CHAR16),\r
+ PrivateFile->FilePath\r
+ );\r
for (Index = 0; DriveName[Index] != 0 && DriveName[Index] != ':'; Index++) {\r
;\r
}\r
}\r
}\r
\r
- StrCpy ((CHAR16 *)FileSystemInfoBuffer->VolumeLabel, PrivateRoot->VolumeLabel);\r
+ StrCpyS (\r
+ (CHAR16 *)FileSystemInfoBuffer->VolumeLabel,\r
+ (*BufferSize - SIZE_OF_EFI_FILE_SYSTEM_INFO) / sizeof (CHAR16),\r
+ PrivateRoot->VolumeLabel\r
+ );\r
*BufferSize = SIZE_OF_EFI_FILE_SYSTEM_INFO + StrSize (PrivateRoot->VolumeLabel);\r
Status = EFI_SUCCESS;\r
}\r
goto Done;\r
}\r
\r
- StrCpy ((CHAR16 *)Buffer, PrivateRoot->VolumeLabel);\r
+ StrCpyS (\r
+ (CHAR16 *)Buffer,\r
+ *BufferSize / sizeof (CHAR16),\r
+ PrivateRoot->VolumeLabel\r
+ );\r
*BufferSize = StrSize (PrivateRoot->VolumeLabel);\r
Status = EFI_SUCCESS;\r
}\r
goto Done;\r
}\r
\r
- StrCpy (PrivateRoot->VolumeLabel, NewFileSystemInfo->VolumeLabel);\r
+ StrCpyS (\r
+ PrivateRoot->VolumeLabel,\r
+ StrSize (NewFileSystemInfo->VolumeLabel) / sizeof (CHAR16),\r
+ NewFileSystemInfo->VolumeLabel\r
+ );\r
\r
Status = EFI_SUCCESS;\r
goto Done;\r
goto Done;\r
}\r
\r
- StrCpy (PrivateRoot->VolumeLabel, (CHAR16 *)Buffer);\r
+ StrCpyS (\r
+ PrivateRoot->VolumeLabel,\r
+ StrSize (PrivateRoot->VolumeLabel) / sizeof (CHAR16),\r
+ (CHAR16 *)Buffer\r
+ );\r
\r
Status = EFI_SUCCESS;\r
goto Done;\r
goto Done;\r
}\r
\r
- StrCpy (OldFileName, PrivateFile->FileName);\r
+ StrCpyS (\r
+ OldFileName,\r
+ StrSize (PrivateFile->FileName) / sizeof (CHAR16),\r
+ PrivateFile->FileName\r
+ );\r
\r
//\r
// Make full pathname from new filename and rootpath.\r
goto Done;\r
}\r
\r
- StrCpy (NewFileName, PrivateRoot->FilePath);\r
- StrCat (NewFileName, L"\\");\r
- StrCat (NewFileName, NewFileInfo->FileName + 1);\r
+ StrCpyS (NewFileName, Size / sizeof (CHAR16), PrivateRoot->FilePath);\r
+ StrCatS (NewFileName, Size / sizeof (CHAR16), L"\\");\r
+ StrCatS (NewFileName, Size / sizeof (CHAR16), NewFileInfo->FileName + 1);\r
} else {\r
Size = StrSize (PrivateFile->FilePath);\r
Size += StrSize (L"\\");\r
goto Done;\r
}\r
\r
- StrCpy (NewFileName, PrivateFile->FilePath);\r
- StrCat (NewFileName, L"\\");\r
- StrCat (NewFileName, NewFileInfo->FileName);\r
+ StrCpyS (NewFileName, Size / sizeof (CHAR16), PrivateFile->FilePath);\r
+ StrCatS (NewFileName, Size / sizeof (CHAR16), L"\\");\r
+ StrCatS (NewFileName, Size / sizeof (CHAR16), NewFileInfo->FileName);\r
}\r
\r
//\r
goto Done;\r
}\r
\r
- StrCpy (PrivateFile->FileName, NewFileName);\r
+ StrCpyS (PrivateFile->FileName, StrSize (NewFileName) / sizeof (CHAR16), NewFileName);\r
\r
Size = StrSize (NewFileName);\r
Size += StrSize (L"\\*");\r
TempFileName = AllocatePool (Size);\r
\r
- StrCpy (TempFileName, NewFileName);\r
+ StrCpyS (TempFileName, Size / sizeof (CHAR16), NewFileName);\r
\r
if (!PrivateFile->IsDirectoryPath) {\r
PrivateFile->LHandle = CreateFile (\r
NULL\r
);\r
\r
- StrCat (TempFileName, L"\\*");\r
+ StrCatS (TempFileName, Size / sizeof (CHAR16), L"\\*");\r
PrivateFile->LHandle = FindFirstFile (TempFileName, &FindBuf);\r
\r
FreePool (TempFileName);\r
Size += StrSize (L"\\*");\r
TempFileName = AllocatePool (Size);\r
\r
- StrCpy (TempFileName, OldFileName);\r
+ StrCpyS (TempFileName, Size / sizeof (CHAR16), OldFileName);\r
\r
if (!PrivateFile->IsDirectoryPath) {\r
PrivateFile->LHandle = CreateFile (\r
NULL\r
);\r
\r
- StrCat (TempFileName, L"\\*");\r
+ StrCatS (TempFileName, Size / sizeof (CHAR16), L"\\*");\r
PrivateFile->LHandle = FindFirstFile (TempFileName, &FindBuf);\r
}\r
\r