/** @file\r
Provides interface to advanced shell functionality for parsing both handle and protocol database.\r
\r
- Copyright (c) 2013 - 2014, Hewlett-Packard Development Company, L.P.<BR>\r
+ (C) Copyright 2013-2014 Hewlett-Packard Development Company, L.P.<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
}\r
\r
Temp = HiiGetString(mHandleParsingHiiHandle, STRING_TOKEN(STR_PCIRB_DUMP_PH), NULL);\r
- ASSERT (Temp != NULL);\r
+ if (Temp == NULL) {\r
+ return NULL;\r
+ }\r
Temp2 = CatSPrint(L"\r\n", Temp, PciRootBridgeIo->ParentHandle);\r
FreePool(Temp);\r
RetVal = Temp2;\r
Temp2 = NULL;\r
\r
Temp = HiiGetString(mHandleParsingHiiHandle, STRING_TOKEN(STR_PCIRB_DUMP_SEG), NULL);\r
- ASSERT (Temp != NULL);\r
+ if (Temp == NULL) {\r
+ SHELL_FREE_NON_NULL(RetVal);\r
+ return NULL;\r
+ }\r
Temp2 = CatSPrint(RetVal, Temp, PciRootBridgeIo->SegmentNumber);\r
FreePool(Temp);\r
FreePool(RetVal);\r
Status = PciRootBridgeIo->GetAttributes (PciRootBridgeIo, &Supports, &Attributes);\r
if (!EFI_ERROR(Status)) {\r
Temp = HiiGetString(mHandleParsingHiiHandle, STRING_TOKEN(STR_PCIRB_DUMP_ATT), NULL);\r
- ASSERT (Temp != NULL); \r
+ if (Temp == NULL) {\r
+ SHELL_FREE_NON_NULL(RetVal);\r
+ return NULL;\r
+ } \r
Temp2 = CatSPrint(RetVal, Temp, Attributes);\r
FreePool(Temp);\r
FreePool(RetVal);\r
Temp2 = NULL;\r
\r
Temp = HiiGetString(mHandleParsingHiiHandle, STRING_TOKEN(STR_PCIRB_DUMP_SUPPORTS), NULL);\r
- ASSERT (Temp != NULL);\r
+ if (Temp == NULL) {\r
+ SHELL_FREE_NON_NULL(RetVal);\r
+ return NULL;\r
+ }\r
Temp2 = CatSPrint(RetVal, Temp, Supports);\r
FreePool(Temp);\r
FreePool(RetVal);\r
Status = PciRootBridgeIo->Configuration (PciRootBridgeIo, (VOID **) &Configuration);\r
if (!EFI_ERROR(Status) && Configuration != NULL) {\r
Temp = HiiGetString(mHandleParsingHiiHandle, STRING_TOKEN(STR_PCIRB_DUMP_TITLE), NULL);\r
- ASSERT (Temp != NULL);\r
+ if (Temp == NULL) {\r
+ SHELL_FREE_NON_NULL(RetVal);\r
+ return NULL;\r
+ }\r
Temp2 = CatSPrint(RetVal, Temp, Supports);\r
FreePool(Temp);\r
FreePool(RetVal);\r
return (CatSPrint(NULL, L"AdapterInfo"));\r
}\r
\r
+ InfoTypesBuffer = NULL;\r
+ InformationBlock = NULL;\r
+ \r
//\r
// Allocate print buffer to store data\r
//\r
);\r
if (EFI_ERROR (Status)) {\r
TempStr = HiiGetString (mHandleParsingHiiHandle, STRING_TOKEN(STR_GET_SUPP_TYPES_FAILED), NULL);\r
- RetVal = CatSPrint (RetVal, TempStr, Status);\r
+ if (TempStr != NULL) {\r
+ RetVal = CatSPrint (RetVal, TempStr, Status);\r
+ } else {\r
+ goto ERROR_EXIT;\r
+ } \r
} else {\r
TempStr = HiiGetString (mHandleParsingHiiHandle, STRING_TOKEN(STR_SUPP_TYPE_HEADER), NULL);\r
+ if (TempStr == NULL) {\r
+ goto ERROR_EXIT;\r
+ }\r
RetVal = CatSPrint (RetVal, TempStr);\r
SHELL_FREE_NON_NULL (TempStr);\r
\r
for (GuidIndex = 0; GuidIndex < InfoTypesBufferCount; GuidIndex++) {\r
TempStr = HiiGetString (mHandleParsingHiiHandle, STRING_TOKEN(STR_GUID_NUMBER), NULL);\r
+ if (TempStr == NULL) {\r
+ goto ERROR_EXIT;\r
+ }\r
RetVal = CatSPrint (RetVal, TempStr, (GuidIndex + 1), InfoTypesBuffer[GuidIndex]);\r
SHELL_FREE_NON_NULL (TempStr);\r
\r
TempStr = HiiGetString (mHandleParsingHiiHandle, STRING_TOKEN(STR_GUID_STRING), NULL);\r
+ if (TempStr == NULL) {\r
+ goto ERROR_EXIT;\r
+ }\r
\r
if (CompareGuid (&InfoTypesBuffer[GuidIndex], &gEfiAdapterInfoMediaStateGuid)) {\r
RetVal = CatSPrint (RetVal, TempStr, L"gEfiAdapterInfoMediaStateGuid");\r
\r
if (EFI_ERROR (Status)) {\r
TempStr = HiiGetString (mHandleParsingHiiHandle, STRING_TOKEN(STR_GETINFO_FAILED), NULL);\r
+ if (TempStr == NULL) {\r
+ goto ERROR_EXIT;\r
+ }\r
RetVal = CatSPrint (RetVal, TempStr, Status);\r
} else {\r
if (CompareGuid (&InfoTypesBuffer[GuidIndex], &gEfiAdapterInfoMediaStateGuid)) {\r
TempStr = HiiGetString (mHandleParsingHiiHandle, STRING_TOKEN(STR_MEDIA_STATE), NULL);\r
+ if (TempStr == NULL) {\r
+ goto ERROR_EXIT;\r
+ }\r
RetVal = CatSPrint (\r
RetVal,\r
TempStr,\r
);\r
} else if (CompareGuid (&InfoTypesBuffer[GuidIndex], &gEfiAdapterInfoNetworkBootGuid)) {\r
TempStr = HiiGetString (mHandleParsingHiiHandle, STRING_TOKEN(STR_NETWORK_BOOT_INFO), NULL);\r
+ if (TempStr == NULL) {\r
+ goto ERROR_EXIT;\r
+ }\r
RetVal = CatSPrint (\r
RetVal,\r
TempStr,\r
);\r
} else if (CompareGuid (&InfoTypesBuffer[GuidIndex], &gEfiAdapterInfoSanMacAddressGuid) == TRUE) { \r
TempStr = HiiGetString (mHandleParsingHiiHandle, STRING_TOKEN(STR_SAN_MAC_ADDRESS_INFO), NULL);\r
+ if (TempStr == NULL) {\r
+ goto ERROR_EXIT;\r
+ }\r
RetVal = CatSPrint (\r
RetVal,\r
TempStr,\r
); \r
} else {\r
TempStr = HiiGetString (mHandleParsingHiiHandle, STRING_TOKEN(STR_UNKNOWN_INFO_TYPE), NULL);\r
+ if (TempStr == NULL) {\r
+ goto ERROR_EXIT;\r
+ }\r
RetVal = CatSPrint (RetVal, TempStr, &InfoTypesBuffer[GuidIndex]);\r
}\r
}\r
}\r
}\r
\r
+ SHELL_FREE_NON_NULL (InfoTypesBuffer);\r
return RetVal;\r
+\r
+ERROR_EXIT:\r
+ SHELL_FREE_NON_NULL (RetVal);\r
+ SHELL_FREE_NON_NULL (InfoTypesBuffer);\r
+ SHELL_FREE_NON_NULL (InformationBlock);\r
+ return NULL;\r
}\r
//\r
// Put the information on the NT32 protocol GUIDs here so we are not dependant on the Nt32Pkg\r
STATIC CONST EFI_GUID WinNtIoProtocolGuid = LOCAL_EFI_WIN_NT_BUS_DRIVER_IO_PROTOCOL_GUID;\r
STATIC CONST EFI_GUID WinNtSerialPortGuid = LOCAL_EFI_WIN_NT_SERIAL_PORT_GUID;\r
\r
+//\r
+// Deprecated protocols we dont want to link from IntelFrameworkModulePkg\r
+//\r
+#define LOCAL_EFI_ISA_IO_PROTOCOL_GUID \\r
+ { \\r
+ 0x7ee2bd44, 0x3da0, 0x11d4, { 0x9a, 0x38, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d } \\r
+ } \r
+#define LOCAL_EFI_ISA_ACPI_PROTOCOL_GUID \\r
+ { \\r
+ 0x64a892dc, 0x5561, 0x4536, { 0x92, 0xc7, 0x79, 0x9b, 0xfc, 0x18, 0x33, 0x55 } \\r
+ }\r
+STATIC CONST EFI_GUID EfiIsaIoProtocolGuid = LOCAL_EFI_ISA_IO_PROTOCOL_GUID;\r
+STATIC CONST EFI_GUID EfiIsaAcpiProtocolGuid = LOCAL_EFI_ISA_ACPI_PROTOCOL_GUID;\r
+\r
+\r
STATIC CONST GUID_INFO_BLOCK mGuidStringListNT[] = {\r
{STRING_TOKEN(STR_WINNT_THUNK), (EFI_GUID*)&WinNtThunkProtocolGuid, NULL},\r
{STRING_TOKEN(STR_WINNT_DRIVER_IO), (EFI_GUID*)&WinNtIoProtocolGuid, NULL},\r
{STRING_TOKEN(STR_GPT_NBR), &gEfiPartTypeLegacyMbrGuid, NULL},\r
{STRING_TOKEN(STR_DRIVER_CONFIG), &gEfiDriverConfigurationProtocolGuid, NULL},\r
{STRING_TOKEN(STR_DRIVER_CONFIG2), &gEfiDriverConfiguration2ProtocolGuid, NULL},\r
- {STRING_TOKEN(STR_ISA_IO), &gEfiIsaIoProtocolGuid, NULL},\r
- {STRING_TOKEN(STR_ISA_ACPI), &gEfiIsaAcpiProtocolGuid, NULL},\r
+\r
+//\r
+// these are using local (non-global) definitions to reduce package dependancy.\r
+//\r
+ {STRING_TOKEN(STR_ISA_IO), (EFI_GUID*)&EfiIsaIoProtocolGuid, NULL},\r
+ {STRING_TOKEN(STR_ISA_ACPI), (EFI_GUID*)&EfiIsaAcpiProtocolGuid, NULL},\r
\r
//\r
// the ones under this are GUID identified structs, not protocols\r