X-Git-Url: https://git.proxmox.com/?a=blobdiff_plain;f=EdkNt32Pkg%2FDxe%2FWinNtThunk%2FBus%2FSimpleFileSystem%2FWinNtSimpleFileSystem.c;h=30f5476d5a2f179293a0c9fd76012d767ec06bf4;hb=ac10bddd8ecdb4a4505271aca05c8b991f99282f;hp=bea7de40f831989a641e3b3963177de5afb2a51b;hpb=8b018de64f54b67f437c95bf0ed591b03a6cc63b;p=mirror_edk2.git diff --git a/EdkNt32Pkg/Dxe/WinNtThunk/Bus/SimpleFileSystem/WinNtSimpleFileSystem.c b/EdkNt32Pkg/Dxe/WinNtThunk/Bus/SimpleFileSystem/WinNtSimpleFileSystem.c index bea7de40f8..30f5476d5a 100644 --- a/EdkNt32Pkg/Dxe/WinNtThunk/Bus/SimpleFileSystem/WinNtSimpleFileSystem.c +++ b/EdkNt32Pkg/Dxe/WinNtThunk/Bus/SimpleFileSystem/WinNtSimpleFileSystem.c @@ -688,6 +688,32 @@ OpenRoot: FileName[StrLen (FileName) - 1] = 0; } + // + // If file name does not equal to "." or "..", + // then we trim the leading/trailing blanks and trailing dots + // + if (StrCmp (FileName, L".") != 0 && StrCmp (FileName, L"..") != 0) { + // + // Trim leading blanks + // + Count = 0; + for (TempFileName = FileName; + *TempFileName != 0 && *TempFileName == L' '; + TempFileName++) { + Count++; + } + CutPrefix (FileName, Count); + // + // Trim trailing dots and blanks + // + for (TempFileName = FileName + StrLen (FileName) - 1; + TempFileName >= FileName && (*TempFileName == L' ' || *TempFileName == L'.'); + TempFileName--) { + ; + } + *(TempFileName + 1) = 0; + } + // // Attempt to open the file // @@ -738,8 +764,13 @@ OpenRoot: StrCat (NewPrivateFile->FileName, FileName + 1); } else { StrCpy (NewPrivateFile->FileName, NewPrivateFile->FilePath); - StrCat (NewPrivateFile->FileName, L"\\"); - StrCat (NewPrivateFile->FileName, FileName); + if (StrCmp (FileName, L"") != 0) { + // + // In case the filename becomes empty, especially after trimming dots and blanks + // + StrCat (NewPrivateFile->FileName, L"\\"); + StrCat (NewPrivateFile->FileName, FileName); + } } //