]> git.proxmox.com Git - mirror_edk2.git/blobdiff - EdkNt32Pkg/Dxe/WinNtThunk/Bus/SimpleFileSystem/WinNtSimpleFileSystem.c
Add a lock to protect the critical region in Service APIs for gEfiBlockIoProtocolGuid...
[mirror_edk2.git] / EdkNt32Pkg / Dxe / WinNtThunk / Bus / SimpleFileSystem / WinNtSimpleFileSystem.c
index bea7de40f831989a641e3b3963177de5afb2a51b..30f5476d5a2f179293a0c9fd76012d767ec06bf4 100644 (file)
@@ -688,6 +688,32 @@ OpenRoot:
     FileName[StrLen (FileName) - 1]  = 0;\r
   }\r
 \r
+  //\r
+  // If file name does not equal to "." or "..", \r
+  // then we trim the leading/trailing blanks and trailing dots\r
+  //\r
+  if (StrCmp (FileName, L".") != 0 && StrCmp (FileName, L"..") != 0) {\r
+    //\r
+    // Trim leading blanks\r
+    //\r
+    Count = 0;\r
+    for (TempFileName = FileName;\r
+      *TempFileName != 0 && *TempFileName == L' ';\r
+      TempFileName++) {\r
+      Count++;\r
+    }\r
+    CutPrefix (FileName, Count);\r
+    //\r
+    // Trim trailing dots and blanks\r
+    //\r
+    for (TempFileName = FileName + StrLen (FileName) - 1; \r
+      TempFileName >= FileName && (*TempFileName == L' ' || *TempFileName == L'.');\r
+      TempFileName--) {\r
+      ;\r
+    }\r
+    *(TempFileName + 1) = 0;\r
+  }\r
+\r
   //\r
   // Attempt to open the file\r
   //\r
@@ -738,8 +764,13 @@ OpenRoot:
     StrCat (NewPrivateFile->FileName, FileName + 1);\r
   } else {\r
     StrCpy (NewPrivateFile->FileName, NewPrivateFile->FilePath);\r
-    StrCat (NewPrivateFile->FileName, L"\\");\r
-    StrCat (NewPrivateFile->FileName, FileName);\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
+    }\r
   }\r
 \r
   //\r