summaryrefslogtreecommitdiffstats
path: root/ShellPkg/Library/UefiShellLevel2CommandsLib
diff options
context:
space:
mode:
authorQiu Shumin <shumin.qiu@intel.com>2015-07-01 01:46:20 +0000
committershenshushi <shenshushi@Edk2>2015-07-01 01:46:20 +0000
commit2ce8ce9b064c0058964cb35ddc7272059fb7663c (patch)
treeb95f59081f3af6174c16ff9162545df5c0124a80 /ShellPkg/Library/UefiShellLevel2CommandsLib
parent203beadc12dbc5665d4de1003246fc13c94763fc (diff)
downloadedk2-2ce8ce9b064c0058964cb35ddc7272059fb7663c.tar.gz
edk2-2ce8ce9b064c0058964cb35ddc7272059fb7663c.tar.bz2
edk2-2ce8ce9b064c0058964cb35ddc7272059fb7663c.zip
ShellPkg: Refine the code logic of mv.c.
When doing the mv we should check whether source is 'above' dest on file path tree. This patch make the check logic more precise. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Qiu Shumin <shumin.qiu@intel.com> Reviewed-by: Jaben Carsey <jaben.carsey@intel.com> Reviewed-by: Samer El-Haj-Mahmoud <elhaj@hp.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@17750 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'ShellPkg/Library/UefiShellLevel2CommandsLib')
-rw-r--r--ShellPkg/Library/UefiShellLevel2CommandsLib/Mv.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/ShellPkg/Library/UefiShellLevel2CommandsLib/Mv.c b/ShellPkg/Library/UefiShellLevel2CommandsLib/Mv.c
index 40ba00b493..fa67533743 100644
--- a/ShellPkg/Library/UefiShellLevel2CommandsLib/Mv.c
+++ b/ShellPkg/Library/UefiShellLevel2CommandsLib/Mv.c
@@ -128,9 +128,11 @@ IsValidMove(
//
// If they're the same, or if source is "above" dest on file path tree
//
- if ( StringNoCaseCompare (&DestPathWalker, &SourcePath) == 0
- || StrStr(DestPathWalker, SourcePath) == DestPathWalker
- ) {
+ if ( StringNoCaseCompare (&DestPathWalker, &SourcePath) == 0 ||
+ ((StrStr(DestPathWalker, SourcePath) == DestPathWalker) &&
+ (DestPathWalker[StrLen(SourcePath)] == '\\')
+ )
+ ) {
ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_MV_INV_SUB), gShellLevel2HiiHandle);
FreePool(DestPathCopy);
return (FALSE);