]> git.proxmox.com Git - mirror_edk2.git/blobdiff - ShellPkg/Library/UefiHandleParsingLib/UefiHandleParsingLib.c
ShellPkg/UefiHandleParsingLib.c: Handle memory allocation failure
[mirror_edk2.git] / ShellPkg / Library / UefiHandleParsingLib / UefiHandleParsingLib.c
index a81d1f208a2761f4560c35c10feb1352ffa4b4bd..c9093955317a38eee1df6a6c21f0de0ce0d7ea75 100644 (file)
@@ -244,15 +244,15 @@ GraphicsOutputProtocolDumpInformation(
   IN CONST BOOLEAN    Verbose\r
   )\r
 {\r
-  EFI_GRAPHICS_OUTPUT_PROTOCOL          *GraphicsOutput;
-  EFI_STATUS                            Status;
-  CHAR16                                *RetVal;
-  CHAR16                                *Temp;
-  CHAR16                                *Fmt;
-  CHAR16                                *TempRetVal;
-  UINTN                                 GopInfoSize;
-  UINT32                                Mode;
-  EFI_GRAPHICS_OUTPUT_MODE_INFORMATION  *GopInfo;
+  EFI_GRAPHICS_OUTPUT_PROTOCOL          *GraphicsOutput;\r
+  EFI_STATUS                            Status;\r
+  CHAR16                                *RetVal;\r
+  CHAR16                                *Temp;\r
+  CHAR16                                *Fmt;\r
+  CHAR16                                *TempRetVal;\r
+  UINTN                                 GopInfoSize;\r
+  UINT32                                Mode;\r
+  EFI_GRAPHICS_OUTPUT_MODE_INFORMATION  *GopInfo;\r
 \r
   if (!Verbose) {\r
     return (CatSPrint(NULL, L"GraphicsOutput"));\r
@@ -299,53 +299,53 @@ GraphicsOutputProtocolDumpInformation(
              GraphicsOutput->Mode->Info->PixelFormat!=PixelBitMask?0:GraphicsOutput->Mode->Info->PixelInformation.BlueMask\r
              );\r
 \r
-  SHELL_FREE_NON_NULL (Temp);
-  
+  SHELL_FREE_NON_NULL (Temp);\r
+\r
   Temp = HiiGetString (mHandleParsingHiiHandle, STRING_TOKEN (STR_GOP_RES_LIST_MAIN), NULL);\r
   if (Temp == NULL) {\r
     SHELL_FREE_NON_NULL (RetVal);\r
     goto EXIT;\r
   }\r
-
-  TempRetVal = CatSPrint (RetVal, Temp);
+\r
+  TempRetVal = CatSPrint (RetVal, Temp);\r
   SHELL_FREE_NON_NULL (RetVal);\r
   if (TempRetVal == NULL) {\r
     goto EXIT;\r
   }\r
-  RetVal = TempRetVal;
-  SHELL_FREE_NON_NULL (Temp);
-
+  RetVal = TempRetVal;\r
+  SHELL_FREE_NON_NULL (Temp);\r
+\r
   Temp = HiiGetString (mHandleParsingHiiHandle, STRING_TOKEN (STR_GOP_RES_LIST_ENTRY), NULL);\r
   if (Temp == NULL) {\r
     SHELL_FREE_NON_NULL (RetVal);\r
     goto EXIT;\r
   }\r
 \r
-
-  for (Mode = 0; Mode < GraphicsOutput->Mode->MaxMode; Mode++) {
-    Status = GraphicsOutput->QueryMode (
-                               GraphicsOutput,
-                               Mode,
-                               &GopInfoSize,
-                               &GopInfo
-                               );
-    if (EFI_ERROR (Status)) {
-      continue;
-    }
-
-    TempRetVal = CatSPrint (
-                   RetVal,
-                   Temp,
-                   Mode,
-                   GopInfo->HorizontalResolution,
-                   GopInfo->VerticalResolution
-                   );
-
-    SHELL_FREE_NON_NULL (GopInfo);
-    SHELL_FREE_NON_NULL (RetVal);
-    RetVal = TempRetVal;
-  }
-
+\r
+  for (Mode = 0; Mode < GraphicsOutput->Mode->MaxMode; Mode++) {\r
+    Status = GraphicsOutput->QueryMode (\r
+                               GraphicsOutput,\r
+                               Mode,\r
+                               &GopInfoSize,\r
+                               &GopInfo\r
+                               );\r
+    if (EFI_ERROR (Status)) {\r
+      continue;\r
+    }\r
+\r
+    TempRetVal = CatSPrint (\r
+                   RetVal,\r
+                   Temp,\r
+                   Mode,\r
+                   GopInfo->HorizontalResolution,\r
+                   GopInfo->VerticalResolution\r
+                   );\r
+\r
+    SHELL_FREE_NON_NULL (GopInfo);\r
+    SHELL_FREE_NON_NULL (RetVal);\r
+    RetVal = TempRetVal;\r
+  }\r
+\r
 \r
 EXIT:\r
   SHELL_FREE_NON_NULL(Temp);\r
@@ -355,134 +355,134 @@ EXIT:
 }\r
 \r
 /**\r
-  Function to dump information about EDID Discovered Protocol.
-
-  This will allocate the return buffer from boot services pool.
-
-  @param[in] TheHandle      The handle that has LoadedImage installed.
-  @param[in] Verbose        TRUE for additional information, FALSE otherwise.
-
-  @retval A pointer to a string containing the information.
-**/
-CHAR16*
-EFIAPI
-EdidDiscoveredProtocolDumpInformation (
-  IN CONST EFI_HANDLE TheHandle,
-  IN CONST BOOLEAN    Verbose
-  )
-{
-  EFI_EDID_DISCOVERED_PROTOCOL          *EdidDiscovered;
-  EFI_STATUS                            Status;
-  CHAR16                                *RetVal;
-  CHAR16                                *Temp;
-  CHAR16                                *TempRetVal;
-
-  if (!Verbose) {
-    return (CatSPrint (NULL, L"EDIDDiscovered"));
-  }
-
-  Status = gBS->OpenProtocol (
-                  TheHandle,
-                  &gEfiEdidDiscoveredProtocolGuid,
-                  (VOID**)&EdidDiscovered,
-                  NULL,
-                  NULL,
-                  EFI_OPEN_PROTOCOL_GET_PROTOCOL
-                  );
-
-  if (EFI_ERROR (Status)) {
-    return NULL;
-  }
-
-  Temp = HiiGetString (mHandleParsingHiiHandle, STRING_TOKEN (STR_EDID_DISCOVERED_MAIN), NULL);
-  if (Temp == NULL) {
-    return NULL;
-  }
-
-  RetVal = CatSPrint (NULL, Temp, EdidDiscovered->SizeOfEdid);
-  SHELL_FREE_NON_NULL (Temp);
-
-  if (EdidDiscovered->SizeOfEdid != 0) {
-    Temp = HiiGetString (mHandleParsingHiiHandle, STRING_TOKEN (STR_EDID_DISCOVERED_DATA), NULL);
-    if (Temp == NULL) {
-      SHELL_FREE_NON_NULL (RetVal);
-      return NULL;
-    }
-    TempRetVal = CatSPrint (RetVal, Temp);
-    SHELL_FREE_NON_NULL (RetVal);
-    RetVal = TempRetVal;
-
-    TempRetVal = CatSDumpHex (RetVal, 7, 0, EdidDiscovered->SizeOfEdid, EdidDiscovered->Edid);
-    RetVal = TempRetVal;
-  }
-  return RetVal;
-}
-
-/**
-  Function to dump information about EDID Active Protocol.
-
-  This will allocate the return buffer from boot services pool.
-
-  @param[in] TheHandle      The handle that has LoadedImage installed.
-  @param[in] Verbose        TRUE for additional information, FALSE otherwise.
-
-  @retval A pointer to a string containing the information.
-**/
-CHAR16*
-EFIAPI
-EdidActiveProtocolDumpInformation (
-  IN CONST EFI_HANDLE TheHandle,
-  IN CONST BOOLEAN    Verbose
-  )
-{
-  EFI_EDID_ACTIVE_PROTOCOL  *EdidActive;
-  EFI_STATUS                Status;
-  CHAR16                    *RetVal;
-  CHAR16                    *Temp;
-  CHAR16                    *TempRetVal;
-
-  if (!Verbose) {
-    return (CatSPrint (NULL, L"EDIDActive"));
-  }
-
-  Status = gBS->OpenProtocol (
-                  TheHandle,
-                  &gEfiEdidActiveProtocolGuid,
-                  (VOID**)&EdidActive,
-                  NULL,
-                  NULL,
-                  EFI_OPEN_PROTOCOL_GET_PROTOCOL
-                  );
-
-  if (EFI_ERROR (Status)) {
-    return NULL;
-  }
-
-  Temp = HiiGetString (mHandleParsingHiiHandle, STRING_TOKEN (STR_EDID_ACTIVE_MAIN), NULL);
-  if (Temp == NULL) {
-    return NULL;
-  }
-
-  RetVal = CatSPrint (NULL, Temp, EdidActive->SizeOfEdid);
-  SHELL_FREE_NON_NULL (Temp);
-
-  if (EdidActive->SizeOfEdid != 0) {
-    Temp = HiiGetString (mHandleParsingHiiHandle, STRING_TOKEN (STR_EDID_ACTIVE_DATA), NULL);
-    if (Temp == NULL) {
-      SHELL_FREE_NON_NULL (RetVal);
-      return NULL;
-    }
-    TempRetVal = CatSPrint (RetVal, Temp);
-    SHELL_FREE_NON_NULL (RetVal);
-    RetVal = TempRetVal;
-
-    TempRetVal = CatSDumpHex (RetVal, 7, 0, EdidActive->SizeOfEdid, EdidActive->Edid);
-    RetVal = TempRetVal;
-  }
-  return RetVal;
-}
-
-/**
+  Function to dump information about EDID Discovered Protocol.\r
+\r
+  This will allocate the return buffer from boot services pool.\r
+\r
+  @param[in] TheHandle      The handle that has LoadedImage installed.\r
+  @param[in] Verbose        TRUE for additional information, FALSE otherwise.\r
+\r
+  @retval A pointer to a string containing the information.\r
+**/\r
+CHAR16*\r
+EFIAPI\r
+EdidDiscoveredProtocolDumpInformation (\r
+  IN CONST EFI_HANDLE TheHandle,\r
+  IN CONST BOOLEAN    Verbose\r
+  )\r
+{\r
+  EFI_EDID_DISCOVERED_PROTOCOL          *EdidDiscovered;\r
+  EFI_STATUS                            Status;\r
+  CHAR16                                *RetVal;\r
+  CHAR16                                *Temp;\r
+  CHAR16                                *TempRetVal;\r
+\r
+  if (!Verbose) {\r
+    return (CatSPrint (NULL, L"EDIDDiscovered"));\r
+  }\r
+\r
+  Status = gBS->OpenProtocol (\r
+                  TheHandle,\r
+                  &gEfiEdidDiscoveredProtocolGuid,\r
+                  (VOID**)&EdidDiscovered,\r
+                  NULL,\r
+                  NULL,\r
+                  EFI_OPEN_PROTOCOL_GET_PROTOCOL\r
+                  );\r
+\r
+  if (EFI_ERROR (Status)) {\r
+    return NULL;\r
+  }\r
+\r
+  Temp = HiiGetString (mHandleParsingHiiHandle, STRING_TOKEN (STR_EDID_DISCOVERED_MAIN), NULL);\r
+  if (Temp == NULL) {\r
+    return NULL;\r
+  }\r
+\r
+  RetVal = CatSPrint (NULL, Temp, EdidDiscovered->SizeOfEdid);\r
+  SHELL_FREE_NON_NULL (Temp);\r
+\r
+  if (EdidDiscovered->SizeOfEdid != 0) {\r
+    Temp = HiiGetString (mHandleParsingHiiHandle, STRING_TOKEN (STR_EDID_DISCOVERED_DATA), NULL);\r
+    if (Temp == NULL) {\r
+      SHELL_FREE_NON_NULL (RetVal);\r
+      return NULL;\r
+    }\r
+    TempRetVal = CatSPrint (RetVal, Temp);\r
+    SHELL_FREE_NON_NULL (RetVal);\r
+    RetVal = TempRetVal;\r
+\r
+    TempRetVal = CatSDumpHex (RetVal, 7, 0, EdidDiscovered->SizeOfEdid, EdidDiscovered->Edid);\r
+    RetVal = TempRetVal;\r
+  }\r
+  return RetVal;\r
+}\r
+\r
+/**\r
+  Function to dump information about EDID Active Protocol.\r
+\r
+  This will allocate the return buffer from boot services pool.\r
+\r
+  @param[in] TheHandle      The handle that has LoadedImage installed.\r
+  @param[in] Verbose        TRUE for additional information, FALSE otherwise.\r
+\r
+  @retval A pointer to a string containing the information.\r
+**/\r
+CHAR16*\r
+EFIAPI\r
+EdidActiveProtocolDumpInformation (\r
+  IN CONST EFI_HANDLE TheHandle,\r
+  IN CONST BOOLEAN    Verbose\r
+  )\r
+{\r
+  EFI_EDID_ACTIVE_PROTOCOL  *EdidActive;\r
+  EFI_STATUS                Status;\r
+  CHAR16                    *RetVal;\r
+  CHAR16                    *Temp;\r
+  CHAR16                    *TempRetVal;\r
+\r
+  if (!Verbose) {\r
+    return (CatSPrint (NULL, L"EDIDActive"));\r
+  }\r
+\r
+  Status = gBS->OpenProtocol (\r
+                  TheHandle,\r
+                  &gEfiEdidActiveProtocolGuid,\r
+                  (VOID**)&EdidActive,\r
+                  NULL,\r
+                  NULL,\r
+                  EFI_OPEN_PROTOCOL_GET_PROTOCOL\r
+                  );\r
+\r
+  if (EFI_ERROR (Status)) {\r
+    return NULL;\r
+  }\r
+\r
+  Temp = HiiGetString (mHandleParsingHiiHandle, STRING_TOKEN (STR_EDID_ACTIVE_MAIN), NULL);\r
+  if (Temp == NULL) {\r
+    return NULL;\r
+  }\r
+\r
+  RetVal = CatSPrint (NULL, Temp, EdidActive->SizeOfEdid);\r
+  SHELL_FREE_NON_NULL (Temp);\r
+\r
+  if (EdidActive->SizeOfEdid != 0) {\r
+    Temp = HiiGetString (mHandleParsingHiiHandle, STRING_TOKEN (STR_EDID_ACTIVE_DATA), NULL);\r
+    if (Temp == NULL) {\r
+      SHELL_FREE_NON_NULL (RetVal);\r
+      return NULL;\r
+    }\r
+    TempRetVal = CatSPrint (RetVal, Temp);\r
+    SHELL_FREE_NON_NULL (RetVal);\r
+    RetVal = TempRetVal;\r
+\r
+    TempRetVal = CatSDumpHex (RetVal, 7, 0, EdidActive->SizeOfEdid, EdidActive->Edid);\r
+    RetVal = TempRetVal;\r
+  }\r
+  return RetVal;\r
+}\r
+\r
+/**\r
   Function to dump information about PciRootBridgeIo.\r
 \r
   This will allocate the return buffer from boot services pool.\r
@@ -727,10 +727,47 @@ DriverEfiVersionProtocolDumpInformation(
   ASSERT_EFI_ERROR(Status);\r
 \r
   RetVal = AllocateZeroPool(VersionStringSize);\r
-  ASSERT(RetVal != NULL);\r
-  UnicodeSPrint(RetVal, VersionStringSize, L"0x%08x", DriverEfiVersion->FirmwareVersion);\r
+  if (RetVal != NULL) {\r
+    UnicodeSPrint (RetVal, VersionStringSize, L"0x%08x", DriverEfiVersion->FirmwareVersion);\r
+  }\r
   return (RetVal);\r
 }\r
+/**\r
+  Function to convert device path to string.\r
+\r
+  This will allocate the return buffer from boot services pool.\r
+\r
+  @param[in] DevPath        Pointer to device path instance.\r
+  @param[in] Verbose        TRUE for additional information, FALSE otherwise.\r
+  @param[in] Length         Maximum allowed text length of the device path.\r
+\r
+  @retval A pointer to a string containing the information.\r
+**/\r
+CHAR16*\r
+ConvertDevicePathToShortText(\r
+  IN CONST EFI_DEVICE_PATH_PROTOCOL *DevPath,\r
+  IN CONST BOOLEAN                  Verbose,\r
+  IN CONST UINTN                    Length\r
+  )\r
+{\r
+  CHAR16                            *Temp;\r
+  CHAR16                            *Temp2;\r
+  UINTN                             Size;\r
+\r
+  //\r
+  // I cannot decide whether to allow shortcuts here (the second BOOLEAN on the next line)\r
+  //\r
+  Temp = ConvertDevicePathToText(DevPath, TRUE, TRUE);\r
+  if (!Verbose && Temp != NULL && StrLen(Temp) > Length) {\r
+    Temp2 = NULL;\r
+    Size  = 0;\r
+    Temp2 = StrnCatGrow(&Temp2, &Size, L"..", 0);\r
+    Temp2 = StrnCatGrow(&Temp2, &Size, Temp+(StrLen(Temp) - (Length - 2)), 0);\r
+    FreePool(Temp);\r
+    Temp = Temp2;\r
+  }\r
+  return (Temp);\r
+}\r
 \r
 /**\r
   Function to dump information about DevicePath protocol.\r
@@ -740,7 +777,7 @@ DriverEfiVersionProtocolDumpInformation(
   @param[in] TheHandle      The handle that has the protocol installed.\r
   @param[in] Verbose        TRUE for additional information, FALSE otherwise.\r
 \r
-  @retval A poitner to a string containing the information.\r
+  @retval A pointer to a string containing the information.\r
 **/\r
 CHAR16*\r
 EFIAPI\r
@@ -751,23 +788,43 @@ DevicePathProtocolDumpInformation(
 {\r
   EFI_DEVICE_PATH_PROTOCOL          *DevPath;\r
   CHAR16                            *Temp;\r
-  CHAR16                            *Temp2;\r
   EFI_STATUS                        Status;\r
   Temp = NULL;\r
 \r
   Status = gBS->OpenProtocol(TheHandle, &gEfiDevicePathProtocolGuid, (VOID**)&DevPath, gImageHandle, NULL, EFI_OPEN_PROTOCOL_GET_PROTOCOL);\r
   if (!EFI_ERROR(Status)) {\r
-    //\r
-    // I cannot decide whether to allow shortcuts here (the second BOOLEAN on the next line)\r
-    //\r
-    Temp = ConvertDevicePathToText(DevPath, TRUE, TRUE);\r
+    Temp = ConvertDevicePathToShortText (DevPath, Verbose, 30);\r
     gBS->CloseProtocol(TheHandle, &gEfiDevicePathProtocolGuid, gImageHandle, NULL);\r
   }\r
-  if (!Verbose && Temp != NULL && StrLen(Temp) > 30) {\r
-    Temp2 = NULL;\r
-    Temp2 = StrnCatGrow(&Temp2, NULL, Temp+(StrLen(Temp) - 30), 30);\r
-    FreePool(Temp);\r
-    Temp = Temp2;\r
+  return (Temp);\r
+}\r
+\r
+/**\r
+  Function to dump information about LoadedImageDevicePath protocol.\r
+\r
+  This will allocate the return buffer from boot services pool.\r
+\r
+  @param[in] TheHandle      The handle that has the protocol installed.\r
+  @param[in] Verbose        TRUE for additional information, FALSE otherwise.\r
+\r
+  @retval A pointer to a string containing the information.\r
+**/\r
+CHAR16*\r
+EFIAPI\r
+LoadedImageDevicePathProtocolDumpInformation(\r
+  IN CONST EFI_HANDLE TheHandle,\r
+  IN CONST BOOLEAN    Verbose\r
+  )\r
+{\r
+  EFI_DEVICE_PATH_PROTOCOL          *DevPath;\r
+  CHAR16                            *Temp;\r
+  EFI_STATUS                        Status;\r
+  Temp = NULL;\r
+\r
+  Status = gBS->OpenProtocol(TheHandle, &gEfiLoadedImageDevicePathProtocolGuid, (VOID**)&DevPath, gImageHandle, NULL, EFI_OPEN_PROTOCOL_GET_PROTOCOL);\r
+  if (!EFI_ERROR(Status)) {\r
+    Temp = ConvertDevicePathToShortText (DevPath, Verbose, 30);\r
+    gBS->CloseProtocol(TheHandle, &gEfiDevicePathProtocolGuid, gImageHandle, NULL);\r
   }\r
   return (Temp);\r
 }\r
@@ -977,7 +1034,7 @@ AdapterInformationDumpInformation (
                          RetVal,\r
                          TempStr,\r
                          ((EFI_ADAPTER_INFO_UNDI_IPV6_SUPPORT *)InformationBlock)->Ipv6Support\r
-                         );   \r
+                         );\r
           SHELL_FREE_NON_NULL (RetVal);\r
           RetVal = TempRetVal;\r
         } else {\r
@@ -1267,7 +1324,7 @@ FirmwareManagementDumpInformation (
                        TempStr,\r
                        Index,\r
                        ImageInfoV1[Index].ImageIndex,\r
-                       ImageInfoV1[Index].ImageTypeId,\r
+                       &ImageInfoV1[Index].ImageTypeId,\r
                        ImageInfoV1[Index].ImageId,\r
                        ImageInfoV1[Index].ImageIdName,\r
                        ImageInfoV1[Index].Version,\r
@@ -1294,7 +1351,7 @@ FirmwareManagementDumpInformation (
                        TempStr,\r
                        Index,\r
                        ImageInfoV2[Index].ImageIndex,\r
-                       ImageInfoV2[Index].ImageTypeId,\r
+                       &ImageInfoV2[Index].ImageTypeId,\r
                        ImageInfoV2[Index].ImageId,\r
                        ImageInfoV2[Index].ImageIdName,\r
                        ImageInfoV2[Index].Version,\r
@@ -1322,7 +1379,7 @@ FirmwareManagementDumpInformation (
                        TempStr,\r
                        Index,\r
                        ImageInfo[Index].ImageIndex,\r
-                       ImageInfo[Index].ImageTypeId,\r
+                       &ImageInfo[Index].ImageTypeId,\r
                        ImageInfo[Index].ImageId,\r
                        ImageInfo[Index].ImageIdName,\r
                        ImageInfo[Index].Version,\r
@@ -1451,7 +1508,7 @@ STATIC CONST GUID_INFO_BLOCK mGuidStringListNT[] = {
 STATIC CONST GUID_INFO_BLOCK mGuidStringList[] = {\r
   {STRING_TOKEN(STR_LOADED_IMAGE),          &gEfiLoadedImageProtocolGuid,                     LoadedImageProtocolDumpInformation},\r
   {STRING_TOKEN(STR_DEVICE_PATH),           &gEfiDevicePathProtocolGuid,                      DevicePathProtocolDumpInformation},\r
-  {STRING_TOKEN(STR_IMAGE_PATH),            &gEfiLoadedImageDevicePathProtocolGuid,           DevicePathProtocolDumpInformation},\r
+  {STRING_TOKEN(STR_IMAGE_PATH),            &gEfiLoadedImageDevicePathProtocolGuid,           LoadedImageDevicePathProtocolDumpInformation},\r
   {STRING_TOKEN(STR_DEVICE_PATH_UTIL),      &gEfiDevicePathUtilitiesProtocolGuid,             NULL},\r
   {STRING_TOKEN(STR_DEVICE_PATH_TXT),       &gEfiDevicePathToTextProtocolGuid,                NULL},\r
   {STRING_TOKEN(STR_DEVICE_PATH_FTXT),      &gEfiDevicePathFromTextProtocolGuid,              NULL},\r
@@ -1475,8 +1532,8 @@ STATIC CONST GUID_INFO_BLOCK mGuidStringList[] = {
   {STRING_TOKEN(STR_ABS_POINTER),           &gEfiAbsolutePointerProtocolGuid,                 NULL},\r
   {STRING_TOKEN(STR_SERIAL_IO),             &gEfiSerialIoProtocolGuid,                        NULL},\r
   {STRING_TOKEN(STR_GRAPHICS_OUTPUT),       &gEfiGraphicsOutputProtocolGuid,                  GraphicsOutputProtocolDumpInformation},\r
-  {STRING_TOKEN(STR_EDID_DISCOVERED),       &gEfiEdidDiscoveredProtocolGuid,                  EdidDiscoveredProtocolDumpInformation},
-  {STRING_TOKEN(STR_EDID_ACTIVE),           &gEfiEdidActiveProtocolGuid,                      EdidActiveProtocolDumpInformation},
+  {STRING_TOKEN(STR_EDID_DISCOVERED),       &gEfiEdidDiscoveredProtocolGuid,                  EdidDiscoveredProtocolDumpInformation},\r
+  {STRING_TOKEN(STR_EDID_ACTIVE),           &gEfiEdidActiveProtocolGuid,                      EdidActiveProtocolDumpInformation},\r
   {STRING_TOKEN(STR_EDID_OVERRIDE),         &gEfiEdidOverrideProtocolGuid,                    NULL},\r
   {STRING_TOKEN(STR_CON_IN),                &gEfiConsoleInDeviceGuid,                         NULL},\r
   {STRING_TOKEN(STR_CON_OUT),               &gEfiConsoleOutDeviceGuid,                        NULL},\r
@@ -2161,10 +2218,11 @@ InternalShellInitHandleList(
   }\r
   for (mHandleList.NextIndex = 1 ; mHandleList.NextIndex <= HandleCount ; mHandleList.NextIndex++){\r
     ListWalker = AllocateZeroPool(sizeof(HANDLE_LIST));\r
-    ASSERT(ListWalker != NULL);\r
-    ListWalker->TheHandle = HandleBuffer[mHandleList.NextIndex-1];\r
-    ListWalker->TheIndex  = mHandleList.NextIndex;\r
-    InsertTailList(&mHandleList.List.Link,&ListWalker->Link);\r
+    if (ListWalker != NULL) {\r
+      ListWalker->TheHandle = HandleBuffer[mHandleList.NextIndex - 1];\r
+      ListWalker->TheIndex = mHandleList.NextIndex;\r
+      InsertTailList (&mHandleList.List.Link, &ListWalker->Link);\r
+    }\r
   }\r
   FreePool(HandleBuffer);\r
   return (EFI_SUCCESS);\r
@@ -2232,7 +2290,9 @@ ConvertHandleToHandleIndex(
   FreePool (ProtocolBuffer);\r
 \r
   ListWalker = AllocateZeroPool(sizeof(HANDLE_LIST));\r
-  ASSERT(ListWalker != NULL);\r
+  if (ListWalker == NULL) {\r
+    return 0;\r
+  }\r
   ListWalker->TheHandle = TheHandle;\r
   ListWalker->TheIndex  = mHandleList.NextIndex++;\r
   InsertTailList(&mHandleList.List.Link,&ListWalker->Link);\r
@@ -2359,7 +2419,10 @@ ParseHandleDatabaseByRelationshipWithType (
   }\r
 \r
   *HandleType = AllocateZeroPool (*HandleCount * sizeof (UINTN));\r
-  ASSERT(*HandleType != NULL);\r
+  if (*HandleType == NULL) {\r
+    SHELL_FREE_NON_NULL (*HandleBuffer);\r
+    return EFI_OUT_OF_RESOURCES;\r
+  }\r
 \r
   DriverBindingHandleIndex = -1;\r
   for (HandleIndex = 0; HandleIndex < *HandleCount; HandleIndex++) {\r
@@ -2404,10 +2467,6 @@ ParseHandleDatabaseByRelationshipWithType (
         (*HandleType)[HandleIndex] |= (UINTN)HR_COMPONENT_NAME_HANDLE;\r
       } else if (CompareGuid (ProtocolGuidArray[ProtocolIndex], &gEfiDevicePathProtocolGuid)          ) {\r
         (*HandleType)[HandleIndex] |= (UINTN)HR_DEVICE_HANDLE;\r
-      } else {\r
-        DEBUG_CODE_BEGIN();\r
-        ASSERT((*HandleType)[HandleIndex] == (*HandleType)[HandleIndex]);\r
-        DEBUG_CODE_END();\r
       }\r
       //\r
       // Retrieve the list of agents that have opened each protocol\r
@@ -2619,26 +2678,26 @@ ParseHandleDatabaseByRelationship (
         // Allocate a handle buffer for the number of handles that matched the attributes in Mask\r
         //\r
         *MatchingHandleBuffer = AllocateZeroPool ((*MatchingHandleCount +1)* sizeof (EFI_HANDLE));\r
-        ASSERT(*MatchingHandleBuffer != NULL);\r
+        if (*MatchingHandleBuffer != NULL) {\r
+          for (HandleIndex = 0, *MatchingHandleCount = 0\r
+               ;  HandleIndex < HandleCount\r
+               ;  HandleIndex++\r
+               ) {\r
+            //\r
+            // Fill the allocated buffer with the handles that matched the attributes in Mask\r
+            //\r
+            if ((HandleType[HandleIndex] & Mask) == Mask) {\r
+              (*MatchingHandleBuffer)[(*MatchingHandleCount)++] = HandleBuffer[HandleIndex];\r
+            }\r
+          }\r
 \r
-        for (HandleIndex = 0,*MatchingHandleCount = 0\r
-          ;  HandleIndex < HandleCount\r
-          ;  HandleIndex++\r
-         ){\r
           //\r
-          // Fill the allocated buffer with the handles that matched the attributes in Mask\r
+          // Make the last one NULL\r
           //\r
-          if ((HandleType[HandleIndex] & Mask) == Mask) {\r
-            (*MatchingHandleBuffer)[(*MatchingHandleCount)++] = HandleBuffer[HandleIndex];\r
-          }\r
-        }\r
-\r
-        //\r
-        // Make the last one NULL\r
-        //\r
-        (*MatchingHandleBuffer)[*MatchingHandleCount] = NULL;\r
+          (*MatchingHandleBuffer)[*MatchingHandleCount] = NULL;\r
 \r
-        Status = EFI_SUCCESS;\r
+          Status = EFI_SUCCESS;\r
+        } // *MatchingHandleBuffer != NULL (IF)\r
       } // MacthingHandleBuffer == NULL (ELSE)\r
     } // *MatchingHandleCount  == 0 (ELSE)\r
   } // no error on ParseHandleDatabaseByRelationshipWithType\r
@@ -2972,7 +3031,7 @@ GetHandleListByProtocolList (
   }\r
 \r
   //\r
-  // No handles were found... \r
+  // No handles were found...\r
   //\r
   if (TotalSize == sizeof(EFI_HANDLE)) {\r
     return (NULL);\r
@@ -3010,13 +3069,3 @@ GetHandleListByProtocolList (
 \r
   return (HandleList);\r
 }\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r