]> git.proxmox.com Git - mirror_edk2.git/blobdiff - EmulatorPkg/Win/Host/WinFileSystem.c
EmulatorPkg: Add -D DISABLE_NEW_DEPRECATED_INTERFACES
[mirror_edk2.git] / EmulatorPkg / Win / Host / WinFileSystem.c
index da6595228da7d70fb8fd7f398eb84df1bb7a0e13..aab926889e0ac94d3c8bc72fa5c33fefb0395198 100644 (file)
@@ -1,7 +1,7 @@
 /*++ @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
@@ -205,8 +205,14 @@ WinNtOpenVolume (
     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
@@ -243,8 +249,8 @@ WinNtOpenVolume (
   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
@@ -362,7 +368,7 @@ GetNextFileNameToken (
   } 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
@@ -496,7 +502,7 @@ WinNtFileOpen (
   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
@@ -548,9 +554,17 @@ WinNtFileOpen (
   }\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
@@ -563,17 +577,17 @@ WinNtFileOpen (
   }\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
@@ -657,7 +671,11 @@ WinNtFileOpen (
     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
@@ -715,7 +733,7 @@ WinNtFileOpen (
       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
@@ -769,7 +787,7 @@ WinNtFileOpen (
     //\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
@@ -1330,8 +1348,8 @@ WinNtFileSetPossition (
       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
@@ -1599,7 +1617,11 @@ WinNtFileGetInfo (
       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
@@ -1664,7 +1686,11 @@ WinNtFileGetInfo (
       }\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
@@ -1676,7 +1702,11 @@ WinNtFileGetInfo (
       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
@@ -1768,7 +1798,11 @@ WinNtFileSetInfo (
       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
@@ -1783,7 +1817,11 @@ WinNtFileSetInfo (
       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
@@ -1852,7 +1890,11 @@ WinNtFileSetInfo (
     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
@@ -1867,9 +1909,9 @@ WinNtFileSetInfo (
       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
@@ -1880,9 +1922,9 @@ WinNtFileSetInfo (
       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
@@ -1990,13 +2032,13 @@ WinNtFileSetInfo (
         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
@@ -2029,7 +2071,7 @@ WinNtFileSetInfo (
           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
@@ -2048,7 +2090,7 @@ WinNtFileSetInfo (
       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
@@ -2071,7 +2113,7 @@ WinNtFileSetInfo (
           NULL\r
         );\r
 \r
-        StrCat (TempFileName, L"\\*");\r
+        StrCatS (TempFileName, Size / sizeof (CHAR16), L"\\*");\r
         PrivateFile->LHandle = FindFirstFile (TempFileName, &FindBuf);\r
       }\r
 \r