]> git.proxmox.com Git - mirror_edk2.git/blobdiff - ShellPkg/Library/UefiHandleParsingLib/UefiHandleParsingLib.c
ShellPkg/HandleParsingLib: Open LoadedImageProtocol first
[mirror_edk2.git] / ShellPkg / Library / UefiHandleParsingLib / UefiHandleParsingLib.c
index b4cd1b3bee553b1ec93f27144fda5f1e1e4a82b0..c96f6dd157684c91e4db5ea4e505d139bb221627 100644 (file)
@@ -169,6 +169,7 @@ LoadedImageProtocolDumpInformation(
   EFI_STATUS                        Status;\r
   CHAR16                            *RetVal;\r
   CHAR16                            *Temp;\r
+  CHAR16                            *FilePath;\r
   CHAR16                            *CodeType;\r
   CHAR16                            *DataType;\r
 \r
@@ -176,13 +177,6 @@ LoadedImageProtocolDumpInformation(
     return (CatSPrint(NULL, L"LoadedImage"));\r
   }\r
 \r
-  HandleParsingHiiInit();\r
-\r
-  Temp = HiiGetString(mHandleParsingHiiHandle, STRING_TOKEN(STR_LI_DUMP_MAIN), NULL);\r
-  if (Temp == NULL) {\r
-    return NULL;\r
-  }\r
-\r
   Status = gBS->OpenProtocol (\r
                 TheHandle,\r
                 &gEfiLoadedImageProtocolGuid,\r
@@ -193,10 +187,18 @@ LoadedImageProtocolDumpInformation(
                );\r
 \r
   if (EFI_ERROR (Status)) {\r
-    SHELL_FREE_NON_NULL (Temp);\r
     return NULL;\r
   }\r
 \r
+  HandleParsingHiiInit();\r
+\r
+  Temp = HiiGetString(mHandleParsingHiiHandle, STRING_TOKEN(STR_LI_DUMP_MAIN), NULL);\r
+  if (Temp == NULL) {\r
+    return NULL;\r
+  }\r
+\r
+  FilePath = ConvertDevicePathToText(LoadedImage->FilePath, TRUE, TRUE);\r
+\r
   DataType = ConvertMemoryType(LoadedImage->ImageDataType);\r
   CodeType = ConvertMemoryType(LoadedImage->ImageCodeType);\r
 \r
@@ -207,7 +209,7 @@ LoadedImageProtocolDumpInformation(
              LoadedImage->ParentHandle,\r
              LoadedImage->SystemTable,\r
              LoadedImage->DeviceHandle,\r
-             LoadedImage->FilePath,\r
+             FilePath,\r
              LoadedImage->LoadOptionsSize,\r
              LoadedImage->LoadOptions,\r
              LoadedImage->ImageBase,\r
@@ -219,6 +221,7 @@ LoadedImageProtocolDumpInformation(
 \r
 \r
   SHELL_FREE_NON_NULL(Temp);\r
+  SHELL_FREE_NON_NULL(FilePath);\r
   SHELL_FREE_NON_NULL(CodeType);\r
   SHELL_FREE_NON_NULL(DataType);\r
 \r
@@ -2331,7 +2334,9 @@ ConvertHandleIndexToHandle(
       // Verify that LinkWalker->TheHandle is valid handle\r
       //\r
       Status = gBS->ProtocolsPerHandle(ListWalker->TheHandle, &ProtocolBuffer, &ProtocolCount);\r
-      if (EFI_ERROR (Status)) {\r
+      if (!EFI_ERROR (Status)) {\r
+        FreePool (ProtocolBuffer);\r
+      } else {\r
         //\r
         // TheHandle is not valid, so do not add to handle list\r
         //\r
@@ -3099,7 +3104,7 @@ GetAllMappingGuids (
   )\r
 {\r
   UINTN GuidCount;\r
-  UINTN NtGuidCount\r
+  UINTN NtGuidCount;\r
   UINTN Index;\r
 \r
   if (Count == NULL) {\r