ShellPkg/Dp: Add null pointer check
[mirror_edk2.git] / ShellPkg / Library / UefiShellNetwork2CommandsLib / UefiShellNetwork2CommandsLib.c
1 /** @file\r
2   Main file for NULL named library for network2 shell command functions.\r
3 \r
4   Copyright (c) 2016, Intel Corporation. All rights reserved. <BR>\r
5   This program and the accompanying materials are licensed and made available under\r
6   the terms and conditions of the BSD License which accompanies this distribution.\r
7   The full text of the license may be found at http://opensource.org/licenses/bsd-license.php\r
8 \r
9   THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
10   WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
11 \r
12 **/\r
13 #include "UefiShellNetwork2CommandsLib.h"\r
14 \r
15 CONST CHAR16 gShellNetwork2FileName[] = L"ShellCommands";\r
16 EFI_HANDLE gShellNetwork2HiiHandle = NULL;\r
17 \r
18 /**\r
19   return the file name of the help text file if not using HII.\r
20 \r
21   @return The string pointer to the file name.\r
22 **/\r
23 CONST CHAR16*\r
24 EFIAPI\r
25 ShellCommandGetManFileNameNetwork2 (\r
26   VOID\r
27   )\r
28 {\r
29   return (gShellNetwork2FileName);\r
30 }\r
31 \r
32 /**\r
33   Constructor for the Shell Network2 Commands library.\r
34 \r
35   Install the handlers for Network2 UEFI Shell 2.0 profile commands.\r
36 \r
37   @param ImageHandle            The image handle of the process.\r
38   @param SystemTable            The EFI System Table pointer.\r
39 \r
40   @retval EFI_SUCCESS           The shell command handlers were installed sucessfully.\r
41   @retval EFI_UNSUPPORTED       The shell level required was not found.\r
42 **/\r
43 EFI_STATUS\r
44 EFIAPI\r
45 ShellNetwork2CommandsLibConstructor (\r
46   IN EFI_HANDLE        ImageHandle,\r
47   IN EFI_SYSTEM_TABLE  *SystemTable\r
48   )\r
49 {\r
50   gShellNetwork2HiiHandle = NULL;\r
51 \r
52   //\r
53   // check our bit of the profiles mask\r
54   //\r
55   if ((PcdGet8(PcdShellProfileMask) & BIT4) == 0) {\r
56     return (EFI_SUCCESS);\r
57   }\r
58 \r
59   gShellNetwork2HiiHandle = HiiAddPackages (&gShellNetwork2HiiGuid, gImageHandle, UefiShellNetwork2CommandsLibStrings, NULL);\r
60   if (gShellNetwork2HiiHandle == NULL) {\r
61     return (EFI_DEVICE_ERROR);\r
62   }\r
63   //\r
64   // install our shell command handlers\r
65   //\r
66   ShellCommandRegisterCommandName(L"ping6",    ShellCommandRunPing6     , ShellCommandGetManFileNameNetwork2, 0, L"network2", TRUE , gShellNetwork2HiiHandle, STRING_TOKEN(STR_GET_HELP_PING6));\r
67   ShellCommandRegisterCommandName(L"ifconfig6",ShellCommandRunIfconfig6 , ShellCommandGetManFileNameNetwork2, 0, L"network2", TRUE , gShellNetwork2HiiHandle, STRING_TOKEN(STR_GET_HELP_IFCONFIG6));\r
68 \r
69   return EFI_SUCCESS;\r
70 \r
71 }\r
72 \r
73 /**\r
74   Destructor for the library.  free any resources.\r
75 \r
76   @param ImageHandle            The image handle of the process.\r
77   @param SystemTable            The EFI System Table pointer.\r
78 **/\r
79 EFI_STATUS\r
80 EFIAPI\r
81 ShellNetwork2CommandsLibDestructor (\r
82   IN EFI_HANDLE        ImageHandle,\r
83   IN EFI_SYSTEM_TABLE  *SystemTable\r
84   )\r
85 {\r
86   if (gShellNetwork2HiiHandle != NULL) {\r
87     HiiRemovePackages(gShellNetwork2HiiHandle);\r
88   }\r
89   return EFI_SUCCESS;\r
90 }\r
91 \r