]> git.proxmox.com Git - mirror_edk2.git/commitdiff
fix unaligned device path node access.
authorjcarsey <jcarsey@6f19259b-4bc3-4df7-8a09-765794883524>
Wed, 24 Nov 2010 16:12:11 +0000 (16:12 +0000)
committerjcarsey <jcarsey@6f19259b-4bc3-4df7-8a09-765794883524>
Wed, 24 Nov 2010 16:12:11 +0000 (16:12 +0000)
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@11089 6f19259b-4bc3-4df7-8a09-765794883524

ShellPkg/Application/Shell/ShellProtocol.c

index 392298989ee6dd7a943deb50453d8a1d09580eef..0f799786ee3fb28aa571a8d1a564d8c0b9154de7 100644 (file)
@@ -386,6 +386,7 @@ EfiShellGetFilePathFromDevicePath(
   EFI_HANDLE                      MapHandle;\r
   EFI_STATUS                      Status;\r
   FILEPATH_DEVICE_PATH            *FilePath;\r
+  FILEPATH_DEVICE_PATH            *AlignedNode;\r
 \r
   PathForReturn = NULL;\r
   PathSize = 0;\r
@@ -436,7 +437,10 @@ EfiShellGetFilePathFromDevicePath(
           //\r
           ASSERT((PathForReturn == NULL && PathSize == 0) || (PathForReturn != NULL));\r
           PathForReturn = StrnCatGrow(&PathForReturn, &PathSize, L"\\", 1);\r
-          PathForReturn = StrnCatGrow(&PathForReturn, &PathSize, FilePath->PathName, 0);\r
+\r
+          AlignedNode = AllocateCopyPool (DevicePathNodeLength(FilePath), FilePath);\r
+          PathForReturn = StrnCatGrow(&PathForReturn, &PathSize, AlignedNode->PathName, 0);\r
+          FreePool(AlignedNode);\r
         }\r
       } // for loop of remaining nodes\r
     }\r