summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJim.Dailey@dell.com <Jim.Dailey@dell.com>2018-10-06 03:14:56 +0800
committerRuiyu Ni <ruiyu.ni@intel.com>2018-10-24 13:36:35 +0800
commitb08b045ca9ab46f335d2edc21eeea5340a1aea6b (patch)
tree0c7e6da96fd638e7b409ea53927e936894e86035
parentadd1310df55eede2f52f44a021802831c683577d (diff)
downloadedk2-b08b045ca9ab46f335d2edc21eeea5340a1aea6b.tar.gz
edk2-b08b045ca9ab46f335d2edc21eeea5340a1aea6b.tar.bz2
edk2-b08b045ca9ab46f335d2edc21eeea5340a1aea6b.zip
MdePkg-BaseLib: Fix PathCleanUpDirectories() issue with "\\..\\.."
Replace multiple, consecutive "\" characters prior to other processing involving "\" characters. This fixes an issue where "\\..\\..", "//..//..", and similar input paths are not cleaned properly. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Jim Dailey <jim_dailey@dell.com> Reviewed-by: Ruiyu Ni <Ruiyu.ni@Intel.com> Reviewed-by: Liming Gao <liming.gao@intel.com>
-rw-r--r--MdePkg/Library/BaseLib/FilePaths.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/MdePkg/Library/BaseLib/FilePaths.c b/MdePkg/Library/BaseLib/FilePaths.c
index ce6b3720d5..92e4c350ff 100644
--- a/MdePkg/Library/BaseLib/FilePaths.c
+++ b/MdePkg/Library/BaseLib/FilePaths.c
@@ -87,6 +87,13 @@ PathCleanUpDirectories(
}
//
+ // Replace the "\\" with "\"
+ //
+ while ((TempString = StrStr (Path, L"\\\\")) != NULL) {
+ CopyMem (TempString, TempString + 1, StrSize (TempString + 1));
+ }
+
+ //
// Remove all the "\.". E.g.: fs0:\abc\.\def\.
//
while ((TempString = StrStr (Path, L"\\.\\")) != NULL) {
@@ -109,13 +116,6 @@ PathCleanUpDirectories(
}
}
- //
- // Replace the "\\" with "\"
- //
- while ((TempString = StrStr (Path, L"\\\\")) != NULL) {
- CopyMem (TempString, TempString + 1, StrSize (TempString + 1));
- }
-
return Path;
}