]> git.proxmox.com Git - mirror_edk2.git/commitdiff
Fix a bug with the shell cp command. When searching for a / it was possible to lose...
authorAJFISH <AJFISH@6f19259b-4bc3-4df7-8a09-765794883524>
Fri, 18 Dec 2009 20:49:28 +0000 (20:49 +0000)
committerAJFISH <AJFISH@6f19259b-4bc3-4df7-8a09-765794883524>
Fri, 18 Dec 2009 20:49:28 +0000 (20:49 +0000)
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@9578 6f19259b-4bc3-4df7-8a09-765794883524

UnixPkg/UnixSimpleFileSystemDxe/UnixSimpleFileSystem.c

index b46c9dce973ed21365a6e96332c5880a136eac21..a0c75f578b0f70cc44beffa7f7e1405d1b995f78 100644 (file)
@@ -1895,7 +1895,7 @@ Returns:
   } else {\r
     Status = gBS->AllocatePool (\r
                     EfiBootServicesData,\r
-                    AsciiStrLen (PrivateFile->FileName) + 1 + StrLen (NewFileInfo->FileName) + 1,\r
+                    AsciiStrLen (PrivateFile->FileName) + 2 + StrLen (NewFileInfo->FileName) + 1,\r
                     (VOID **)&NewFileName\r
                     );\r
 \r
@@ -1905,8 +1905,11 @@ Returns:
 \r
     AsciiStrCpy (NewFileName, PrivateRoot->FilePath);\r
     AsciiFilePtr = NewFileName + AsciiStrLen(NewFileName);\r
-    while (AsciiFilePtr > NewFileName && AsciiFilePtr[-1] != '/') {\r
-      AsciiFilePtr--;\r
+    if ((AsciiFilePtr[-1] != '/') && (NewFileInfo->FileName[0] != '/')) {\r
+      // make sure there is a / between Root FilePath and NewFileInfo Filename\r
+      AsciiFilePtr[0] = '/';      \r
+      AsciiFilePtr[1] = '\0';\r
+      AsciiFilePtr++;\r
     }\r
     UnicodeFilePtr = NewFileInfo->FileName;\r
   }\r
@@ -2091,7 +2094,6 @@ Returns:
   }\r
 \r
   UnixStatus = PrivateFile->UnixThunk->Chmod (NewFileName, NewAttr);\r
-\r
   if (UnixStatus != 0) {\r
     Status    = EFI_DEVICE_ERROR;\r
   }\r