]> git.proxmox.com Git - mirror_edk2.git/blobdiff - ShellPkg/Library/UefiShellDriver1CommandsLib/UefiShellDriver1CommandsLib.c
ShellPkg/for: Fix potential null pointer deference
[mirror_edk2.git] / ShellPkg / Library / UefiShellDriver1CommandsLib / UefiShellDriver1CommandsLib.c
index 67a074f11b655dc49ce4bc9091f8d33376dc174e..95cd9a0ca8e48ae76ae50962cef6165e543f9e8c 100644 (file)
@@ -1,7 +1,7 @@
 /** @file\r
   Main file for NULL named library for level 1 shell command functions.\r
 \r
-  Copyright (c) 2010, Intel Corporation. All rights reserved.<BR>\r
+  Copyright (c) 2010 - 2014, Intel Corporation. All rights reserved.<BR>\r
   This program and the accompanying materials\r
   are licensed and made available under the terms and conditions of the BSD License\r
   which accompanies this distribution.  The full text of the license may be found at\r
 \r
 STATIC CONST CHAR16 mFileName[] = L"Driver1Commands";\r
 EFI_HANDLE gShellDriver1HiiHandle = NULL;\r
-CONST EFI_GUID gShellDriver1HiiGuid = \\r
-  { \\r
-  0xaf0b742, 0x63ec, 0x45bd, {0x8d, 0xb6, 0x71, 0xad, 0x7f, 0x2f, 0xe8, 0xe8} \\r
-  };\r
+BOOLEAN    gInReconnect = FALSE;\r
 \r
+/**\r
+  Function to return the name of the file containing help if HII will not be used.\r
 \r
+  @return The filename.\r
+**/\r
 CONST CHAR16*\r
 EFIAPI\r
 ShellCommandGetManFileNameDriver1 (\r
   VOID\r
-  ){\r
+  )\r
+{\r
   return (mFileName);\r
 }\r
 \r
@@ -44,31 +46,15 @@ EFIAPI
 UefiShellDriver1CommandsLibConstructor (\r
   IN EFI_HANDLE        ImageHandle,\r
   IN EFI_SYSTEM_TABLE  *SystemTable\r
-  ) {\r
+  )\r
+{\r
   //\r
-  // check or bit of the profiles mask\r
+  // check our bit of the profiles mask\r
   //\r
-  if (PcdGet8(PcdShellProfileMask) && BIT0 == 0) {\r
-    return (EFI_UNSUPPORTED);\r
+  if ((PcdGet8(PcdShellProfileMask) & BIT0) == 0) {\r
+    return (EFI_SUCCESS);\r
   }\r
 \r
-  //\r
-  // install our shell command handlers that are always installed\r
-  //\r
-  ShellCommandRegisterCommandName(L"connect",    ShellCommandRunConnect               , ShellCommandGetManFileNameDriver1, 0, L"Driver1", TRUE);\r
-  ShellCommandRegisterCommandName(L"devices",    ShellCommandRunDevices               , ShellCommandGetManFileNameDriver1, 0, L"Driver1", TRUE);\r
-  ShellCommandRegisterCommandName(L"openinfo",   ShellCommandRunOpenInfo              , ShellCommandGetManFileNameDriver1, 0, L"Driver1", TRUE);\r
-/*\r
-  ShellCommandRegisterCommandName(L"devtree",    ShellCommandRunDevTree               , ShellCommandGetManFileNameDriver1, 0, L"Driver1", TRUE);\r
-  ShellCommandRegisterCommandName(L"dh",         ShellCommandRunDH                    , ShellCommandGetManFileNameDriver1, 0, L"Driver1", TRUE);\r
-  ShellCommandRegisterCommandName(L"disconnect", ShellCommandRunDisconnect            , ShellCommandGetManFileNameDriver1, 0, L"Driver1", TRUE);\r
-  ShellCommandRegisterCommandName(L"drivers",    ShellCommandRunDrivers               , ShellCommandGetManFileNameDriver1, 0, L"Driver1", TRUE);\r
-  ShellCommandRegisterCommandName(L"drvcfg",     ShellCommandRunDrvCfg                , ShellCommandGetManFileNameDriver1, 0, L"Driver1", TRUE);\r
-  ShellCommandRegisterCommandName(L"drvdiag",    ShellCommandRunDrvDiag               , ShellCommandGetManFileNameDriver1, 0, L"Driver1", TRUE);\r
-  ShellCommandRegisterCommandName(L"reconnect",  ShellCommandRunReconnect             , ShellCommandGetManFileNameDriver1, 0, L"Driver1", TRUE);\r
-  ShellCommandRegisterCommandName(L"unload",     ShellCommandRunUnload                , ShellCommandGetManFileNameDriver1, 0, L"Driver1", TRUE);\r
-*/\r
-\r
   //\r
   // install the HII stuff.\r
   //\r
@@ -77,11 +63,29 @@ UefiShellDriver1CommandsLibConstructor (
     return (EFI_DEVICE_ERROR);\r
   }\r
 \r
+  //\r
+  // install our shell command handlers that are always installed\r
+  //\r
+  ShellCommandRegisterCommandName(L"connect",    ShellCommandRunConnect               , ShellCommandGetManFileNameDriver1, 0, L"Driver1", TRUE, gShellDriver1HiiHandle, STRING_TOKEN(STR_GET_HELP_CONNECT)   );\r
+  ShellCommandRegisterCommandName(L"devices",    ShellCommandRunDevices               , ShellCommandGetManFileNameDriver1, 0, L"Driver1", TRUE, gShellDriver1HiiHandle, STRING_TOKEN(STR_GET_HELP_DEVICES)   );\r
+  ShellCommandRegisterCommandName(L"openinfo",   ShellCommandRunOpenInfo              , ShellCommandGetManFileNameDriver1, 0, L"Driver1", TRUE, gShellDriver1HiiHandle, STRING_TOKEN(STR_GET_HELP_OPENINFO)  );\r
+  ShellCommandRegisterCommandName(L"disconnect", ShellCommandRunDisconnect            , ShellCommandGetManFileNameDriver1, 0, L"Driver1", TRUE, gShellDriver1HiiHandle, STRING_TOKEN(STR_GET_HELP_DISCONNECT));\r
+  ShellCommandRegisterCommandName(L"reconnect",  ShellCommandRunReconnect             , ShellCommandGetManFileNameDriver1, 0, L"Driver1", TRUE, gShellDriver1HiiHandle, STRING_TOKEN(STR_GET_HELP_RECONNECT) );\r
+  ShellCommandRegisterCommandName(L"unload",     ShellCommandRunUnload                , ShellCommandGetManFileNameDriver1, 0, L"Driver1", TRUE, gShellDriver1HiiHandle, STRING_TOKEN(STR_GET_HELP_UNLOAD)    );\r
+  ShellCommandRegisterCommandName(L"drvdiag",    ShellCommandRunDrvDiag               , ShellCommandGetManFileNameDriver1, 0, L"Driver1", TRUE, gShellDriver1HiiHandle, STRING_TOKEN(STR_GET_HELP_DRVDIAG)   );\r
+  ShellCommandRegisterCommandName(L"dh",         ShellCommandRunDh                    , ShellCommandGetManFileNameDriver1, 0, L"Driver1", TRUE, gShellDriver1HiiHandle, STRING_TOKEN(STR_GET_HELP_DH)        );\r
+  ShellCommandRegisterCommandName(L"drivers",    ShellCommandRunDrivers               , ShellCommandGetManFileNameDriver1, 0, L"Driver1", TRUE, gShellDriver1HiiHandle, STRING_TOKEN(STR_GET_HELP_DRIVERS)   );\r
+  ShellCommandRegisterCommandName(L"devtree",    ShellCommandRunDevTree               , ShellCommandGetManFileNameDriver1, 0, L"Driver1", TRUE, gShellDriver1HiiHandle, STRING_TOKEN(STR_GET_HELP_DEVTREE)   );\r
+  ShellCommandRegisterCommandName(L"drvcfg",     ShellCommandRunDrvCfg                , ShellCommandGetManFileNameDriver1, 0, L"Driver1", TRUE, gShellDriver1HiiHandle, STRING_TOKEN(STR_GET_HELP_DRVCFG)    );\r
+\r
   return (EFI_SUCCESS);\r
 }\r
 \r
 /**\r
-  Destructory for the library.  free any resources.\r
+  Destructor for the library.  free any resources.\r
+\r
+  @param ImageHandle            The image handle of the process.\r
+  @param SystemTable            The EFI System Table pointer.\r
 **/\r
 EFI_STATUS\r
 EFIAPI\r
@@ -96,42 +100,5 @@ UefiShellDriver1CommandsLibDestructor (
   return (EFI_SUCCESS);\r
 }\r
 \r
-EFI_HANDLE*\r
-EFIAPI\r
-GetHandleListByPotocol (\r
-  IN CONST EFI_GUID *ProtocolGuid\r
-  ){\r
-  EFI_HANDLE          *HandleList;\r
-  UINTN               Size;\r
-  EFI_STATUS          Status;\r
-\r
-  Size = 0;\r
-  HandleList = NULL;\r
 \r
-  //\r
-  // We cannot use LocateHandleBuffer since we need that NULL item on the ends of the list!\r
-  //\r
-  if (ProtocolGuid == NULL) {\r
-    Status = gBS->LocateHandle(AllHandles, NULL, NULL, &Size, HandleList);\r
-    if (Status == EFI_BUFFER_TOO_SMALL) {\r
-      HandleList = AllocatePool(Size + sizeof(EFI_HANDLE));\r
-      Status = gBS->LocateHandle(AllHandles, NULL, NULL, &Size, HandleList);\r
-      HandleList[Size/sizeof(EFI_HANDLE)] = NULL;\r
-    }\r
-  } else {\r
-    Status = gBS->LocateHandle(ByProtocol, (EFI_GUID*)ProtocolGuid, NULL, &Size, HandleList);\r
-    if (Status == EFI_BUFFER_TOO_SMALL) {\r
-      HandleList = AllocatePool(Size + sizeof(EFI_HANDLE));\r
-      Status = gBS->LocateHandle(ByProtocol, (EFI_GUID*)ProtocolGuid, NULL, &Size, HandleList);\r
-      HandleList[Size/sizeof(EFI_HANDLE)] = NULL;\r
-    }\r
-  }\r
-  if (EFI_ERROR(Status)) {\r
-    if (HandleList != NULL) {\r
-      FreePool(HandleList);\r
-    }\r
-    return (NULL);\r
-  }\r
-  return (HandleList);\r
-}\r
 \r