]> git.proxmox.com Git - mirror_edk2.git/blobdiff - EmulatorPkg/Unix/Host/PosixFileSystem.c
EmulatorPkg: Add -D DISABLE_NEW_DEPRECATED_INTERFACES
[mirror_edk2.git] / EmulatorPkg / Unix / Host / PosixFileSystem.c
index 6ba3b59d7a5b8e5ce67cb34433cfb3818f97ad3d..0a618abcd831a4ba7ab5d0f841cce5441a87a436 100644 (file)
@@ -127,7 +127,11 @@ PosixOpenVolume (
   if (PrivateFile->FileName == NULL) {\r
     goto Done;\r
   }\r
-  AsciiStrCpy (PrivateFile->FileName, Private->FilePath);\r
+  AsciiStrCpyS (\r
+    PrivateFile->FileName,\r
+    AsciiStrSize (Private->FilePath),\r
+    Private->FilePath\r
+    );\r
 \r
   PrivateFile->Signature            = EMU_EFI_FILE_PRIVATE_SIGNATURE;\r
   PrivateFile->Thunk                = Private->Thunk;\r
@@ -377,7 +381,7 @@ PosixFileOpen (
   EFI_FILE_INFO                     *Info;\r
   struct stat                       finfo;\r
   int                               res;\r
-\r
+  UINTN                             Size;\r
 \r
   PrivateFile     = EMU_EFI_FILE_PRIVATE_DATA_FROM_THIS (This);\r
   PrivateRoot     = EMU_SIMPLE_FILE_SYSTEM_PRIVATE_DATA_FROM_THIS (PrivateFile->SimpleFileSystem);\r
@@ -412,17 +416,18 @@ OpenRoot:
 \r
   CopyMem (NewPrivateFile, PrivateFile, sizeof (EMU_EFI_FILE_PRIVATE));\r
 \r
-  NewPrivateFile->FileName = malloc (AsciiStrSize (PrivateFile->FileName) + 1 + StrLen (FileName) + 1);\r
+  Size = AsciiStrSize (PrivateFile->FileName) + 1 + StrLen (FileName) + 1;\r
+  NewPrivateFile->FileName = malloc (Size);\r
   if (NewPrivateFile->FileName == NULL) {\r
     goto Done;\r
   }\r
 \r
   if (*FileName == L'\\') {\r
-    AsciiStrCpy (NewPrivateFile->FileName, PrivateRoot->FilePath);\r
+    AsciiStrCpyS (NewPrivateFile->FileName, Size, PrivateRoot->FilePath);\r
     // Skip first '\'.\r
     Src = FileName + 1;\r
   } else {\r
-    AsciiStrCpy (NewPrivateFile->FileName, PrivateFile->FileName);\r
+    AsciiStrCpyS (NewPrivateFile->FileName, Size, PrivateFile->FileName);\r
     Src = FileName;\r
   }\r
   Dst = NewPrivateFile->FileName + AsciiStrLen (NewPrivateFile->FileName);\r
@@ -748,7 +753,7 @@ PosixFileRead (
   UINTN                   NameSize;\r
   UINTN                   ResultSize;\r
   CHAR8                   *FullFileName;\r
-\r
+  UINTN                   FullFileNameSize;\r
 \r
   PrivateFile = EMU_EFI_FILE_PRIVATE_DATA_FROM_THIS (This);\r
 \r
@@ -798,15 +803,16 @@ PosixFileRead (
 \r
   *BufferSize = ResultSize;\r
 \r
-  FullFileName = malloc (AsciiStrLen(PrivateFile->FileName) + 1 + NameSize);\r
+  FullFileNameSize = AsciiStrLen(PrivateFile->FileName) + 1 + NameSize;\r
+  FullFileName = malloc (FullFileNameSize);\r
   if (FullFileName == NULL) {\r
     Status = EFI_OUT_OF_RESOURCES;\r
     goto Done;\r
   }\r
 \r
-  AsciiStrCpy (FullFileName, PrivateFile->FileName);\r
-  AsciiStrCat (FullFileName, "/");\r
-  AsciiStrCat (FullFileName, PrivateFile->Dirent->d_name);\r
+  AsciiStrCpyS (FullFileName, FullFileNameSize, PrivateFile->FileName);\r
+  AsciiStrCatS (FullFileName, FullFileNameSize, "/");\r
+  AsciiStrCatS (FullFileName, FullFileNameSize, PrivateFile->Dirent->d_name);\r
   Status = UnixSimpleFileSystemFileInfo (\r
             PrivateFile,\r
             FullFileName,\r
@@ -1017,7 +1023,11 @@ PosixFileGetInfo (
     FileSystemInfoBuffer->BlockSize   = buf.f_bsize;\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
 \r
   } else if (CompareGuid (InformationType, &gEfiFileSystemVolumeLabelInfoIdGuid)) {\r
@@ -1026,7 +1036,11 @@ PosixFileGetInfo (
       return EFI_BUFFER_TOO_SMALL;\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
 \r
   }\r
@@ -1082,7 +1096,7 @@ PosixFileSetInfo (
   CHAR16                            *UnicodeFilePtr;\r
   int                               UnixStatus;\r
   struct utimbuf                    Utime;\r
-\r
+  UINTN                             Size;\r
 \r
   PrivateFile = EMU_EFI_FILE_PRIVATE_DATA_FROM_THIS (This);\r
   PrivateRoot = EMU_SIMPLE_FILE_SYSTEM_PRIVATE_DATA_FROM_THIS (PrivateFile->SimpleFileSystem);\r
@@ -1110,7 +1124,11 @@ PosixFileSetInfo (
       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
@@ -1125,7 +1143,11 @@ PosixFileSetInfo (
       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
@@ -1183,28 +1205,34 @@ PosixFileSetInfo (
     goto Done;\r
   }\r
 \r
-  AsciiStrCpy (OldFileName, PrivateFile->FileName);\r
+  AsciiStrCpyS (\r
+    OldFileName,\r
+    AsciiStrSize (PrivateFile->FileName),\r
+    PrivateFile->FileName\r
+    );\r
 \r
   //\r
   // Make full pathname from new filename and rootpath.\r
   //\r
   if (NewFileInfo->FileName[0] == '\\') {\r
-    NewFileName = malloc (AsciiStrLen (PrivateRoot->FilePath) + 1 + StrLen (NewFileInfo->FileName) + 1);\r
+    Size = AsciiStrLen (PrivateRoot->FilePath) + 1 + StrLen (NewFileInfo->FileName) + 1;\r
+    NewFileName = malloc (Size);\r
     if (NewFileName == NULL) {\r
       goto Done;\r
     }\r
 \r
-    AsciiStrCpy (NewFileName, PrivateRoot->FilePath);\r
+    AsciiStrCpyS (NewFileName, Size, PrivateRoot->FilePath);\r
     AsciiFilePtr = NewFileName + AsciiStrLen(NewFileName);\r
     UnicodeFilePtr = NewFileInfo->FileName + 1;\r
     *AsciiFilePtr++ ='/';\r
   } else {\r
-    NewFileName = malloc (AsciiStrLen (PrivateFile->FileName) + 2 + StrLen (NewFileInfo->FileName) + 1);\r
+    Size = AsciiStrLen (PrivateFile->FileName) + 2 + StrLen (NewFileInfo->FileName) + 1;\r
+    NewFileName = malloc (Size);\r
     if (NewFileName == NULL) {\r
       goto Done;\r
     }\r
 \r
-    AsciiStrCpy (NewFileName, PrivateRoot->FilePath);\r
+    AsciiStrCpyS (NewFileName, Size, PrivateRoot->FilePath);\r
     AsciiFilePtr = NewFileName + AsciiStrLen(NewFileName);\r
     if ((AsciiFilePtr[-1] != '/') && (NewFileInfo->FileName[0] != '/')) {\r
       // make sure there is a / between Root FilePath and NewFileInfo Filename\r
@@ -1312,7 +1340,11 @@ PosixFileSetInfo (
         goto Done;\r
       }\r
 \r
-      AsciiStrCpy (PrivateFile->FileName, NewFileName);\r
+      AsciiStrCpyS (\r
+        PrivateFile->FileName,\r
+        AsciiStrSize (NewFileName),\r
+        NewFileName\r
+        );\r
     } else {\r
       Status    = EFI_DEVICE_ERROR;\r
       goto Done;\r
@@ -1493,7 +1525,11 @@ PosixFileSystmeThunkOpen (
     free (Private);\r
     return EFI_OUT_OF_RESOURCES;\r
   }\r
-  StrCpy (Private->VolumeLabel, L"EFI_EMULATED");\r
+  StrCpyS (\r
+    Private->VolumeLabel,\r
+    StrSize (L"EFI_EMULATED") / sizeof (CHAR16),\r
+    L"EFI_EMULATED"\r
+    );\r
 \r
   Private->Signature = EMU_SIMPLE_FILE_SYSTEM_PRIVATE_SIGNATURE;\r
   Private->Thunk     = This;\r