]> git.proxmox.com Git - mirror_edk2.git/blobdiff - ShellPkg/Library/UefiShellDriver1CommandsLib/OpenInfo.c
connect - add comments and add input verification
[mirror_edk2.git] / ShellPkg / Library / UefiShellDriver1CommandsLib / OpenInfo.c
index b60cc183337c3461becd26f3a566b7209371346c..0cb78403917c5b5c5fd5c3b5ea8341f58a8569e3 100644 (file)
@@ -1,7 +1,7 @@
 /** @file\r
   Main file for OpenInfo shell Driver1 function.\r
 \r
-  Copyright (c) 2010, Intel Corporation. All rights reserved.<BR>\r
+  Copyright (c) 2010 - 2011, 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
@@ -23,6 +23,14 @@ STATIC CONST CHAR16 StringExclusive[] = L"Exclusive";
 STATIC CONST CHAR16 StringDriverEx[]  = L"DriverEx ";\r
 STATIC CONST CHAR16 StringUnknown[]   = L"Unknown  ";\r
 \r
+/**\r
+  Open the database and print out all the info about TheHandle.\r
+\r
+  @param[in] TheHandle      The handle to print info on.\r
+\r
+  @retval EFI_SUCCESS           The operation was successful.\r
+  @retval EFI_INVALID_PARAMETER TheHandle was NULL.\r
+**/\r
 EFI_STATUS\r
 EFIAPI\r
 TraverseHandleDatabase (\r
@@ -41,7 +49,9 @@ TraverseHandleDatabase (
   UINTN                               HandleIndex;\r
   CONST CHAR16                        *Name;\r
 \r
-  ASSERT(TheHandle != NULL);\r
+  if (TheHandle == NULL) {\r
+    return (EFI_INVALID_PARAMETER);\r
+  }\r
 \r
   //\r
   // Retrieve the list of all the protocols on the handle\r
@@ -145,6 +155,7 @@ ShellCommandRunOpenInfo (
   SHELL_STATUS        ShellStatus;\r
   EFI_HANDLE          TheHandle;\r
   CONST CHAR16        *Param1;\r
+  UINT64              Intermediate;\r
 \r
   ShellStatus         = SHELL_SUCCESS;\r
 \r
@@ -181,13 +192,14 @@ ShellCommandRunOpenInfo (
       ShellStatus = SHELL_INVALID_PARAMETER;\r
     } else {\r
       Param1 = ShellCommandLineGetRawValue(Package, 1);\r
-      if (Param1 == NULL || ConvertHandleIndexToHandle(StrHexToUintn(Param1)) == NULL){\r
+      Status = ShellConvertStringToUint64(Param1, &Intermediate, TRUE, FALSE);\r
+      if (EFI_ERROR(Status) || Param1 == NULL || ConvertHandleIndexToHandle((UINTN)Intermediate) == NULL){\r
         ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_INV_HANDLE), gShellDriver1HiiHandle, Param1);\r
         ShellStatus = SHELL_INVALID_PARAMETER;\r
       } else {\r
-        TheHandle = ConvertHandleIndexToHandle(StrHexToUintn(Param1));\r
+        TheHandle = ConvertHandleIndexToHandle((UINTN)Intermediate);\r
         ASSERT(TheHandle != NULL);\r
-        ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_OPENINFO_HEADER_LINE), gShellDriver1HiiHandle, StrHexToUintn(Param1), TheHandle);\r
+        ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_OPENINFO_HEADER_LINE), gShellDriver1HiiHandle, (UINTN)Intermediate, TheHandle);\r
 \r
         Status = TraverseHandleDatabase (TheHandle);\r
         if (!EFI_ERROR(Status)) {\r