summaryrefslogtreecommitdiff
path: root/EdkCompatibilityPkg/Foundation/Library/Dxe
diff options
context:
space:
mode:
Diffstat (limited to 'EdkCompatibilityPkg/Foundation/Library/Dxe')
-rw-r--r--EdkCompatibilityPkg/Foundation/Library/Dxe/EfiDriverLib/Debug.c4
-rw-r--r--EdkCompatibilityPkg/Foundation/Library/Dxe/EfiDriverLib/Perf.c12
-rw-r--r--EdkCompatibilityPkg/Foundation/Library/Dxe/Graphics/Graphics.c6
-rw-r--r--EdkCompatibilityPkg/Foundation/Library/Dxe/Graphics/Print.c25
-rw-r--r--EdkCompatibilityPkg/Foundation/Library/Dxe/Graphics/Unicode/Sprint.c8
-rw-r--r--EdkCompatibilityPkg/Foundation/Library/Dxe/GraphicsLite/Graphics.c6
-rw-r--r--EdkCompatibilityPkg/Foundation/Library/Dxe/GraphicsLite/Print.c25
-rw-r--r--EdkCompatibilityPkg/Foundation/Library/Dxe/GraphicsLite/Unicode/Sprint.c8
-rw-r--r--EdkCompatibilityPkg/Foundation/Library/Dxe/Hob/Hob.c27
-rw-r--r--EdkCompatibilityPkg/Foundation/Library/Dxe/Print/Unicode/SPrint.c8
-rw-r--r--EdkCompatibilityPkg/Foundation/Library/Dxe/PrintLite/Unicode/SPrint.c8
-rw-r--r--EdkCompatibilityPkg/Foundation/Library/Dxe/UefiEfiIfrSupportLib/UefiIfrCommon.c6
-rw-r--r--EdkCompatibilityPkg/Foundation/Library/Dxe/UefiEfiIfrSupportLib/UefiIfrString.c8
13 files changed, 101 insertions, 50 deletions
diff --git a/EdkCompatibilityPkg/Foundation/Library/Dxe/EfiDriverLib/Debug.c b/EdkCompatibilityPkg/Foundation/Library/Dxe/EfiDriverLib/Debug.c
index 1c7f7b9cc7..3c43451d09 100644
--- a/EdkCompatibilityPkg/Foundation/Library/Dxe/EfiDriverLib/Debug.c
+++ b/EdkCompatibilityPkg/Foundation/Library/Dxe/EfiDriverLib/Debug.c
@@ -1,6 +1,6 @@
/*++
-Copyright (c) 2004 - 2006, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2004 - 2010, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
which accompanies this distribution. The full text of the license may be found at
@@ -75,7 +75,7 @@ Returns:
);
//
- // Put break point in module that contained the error.
+ // Put dead loop in module that contained the error.
//
EFI_DEADLOOP ();
}
diff --git a/EdkCompatibilityPkg/Foundation/Library/Dxe/EfiDriverLib/Perf.c b/EdkCompatibilityPkg/Foundation/Library/Dxe/EfiDriverLib/Perf.c
index 497c0cf495..96f11bb44d 100644
--- a/EdkCompatibilityPkg/Foundation/Library/Dxe/EfiDriverLib/Perf.c
+++ b/EdkCompatibilityPkg/Foundation/Library/Dxe/EfiDriverLib/Perf.c
@@ -1,6 +1,6 @@
/*++
-Copyright (c) 2004 - 2005, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2004 - 2010, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
which accompanies this distribution. The full text of the license may be found at
@@ -825,6 +825,11 @@ Returns:
return EFI_OUT_OF_RESOURCES;
}
+ //
+ // Initialize 'LogHob' to NULL before usage.
+ //
+ LogHob = NULL;
+
if (Ticker != 0) {
TimerValue = Ticker;
} else {
@@ -837,7 +842,10 @@ Returns:
EfiLibGetSystemConfigurationTable (&gEfiHobListGuid, &HobList);
do {
Status = GetNextGuidHob (&HobList, &gEfiPeiPerformanceHobGuid, (VOID **) &LogHob, NULL);
- if (EFI_ERROR (Status)) {
+ if (EFI_ERROR (Status) || (LogHob == NULL)) {
+ //
+ // Failed to get HOB for ProtocolGuid.
+ //
break;
}
diff --git a/EdkCompatibilityPkg/Foundation/Library/Dxe/Graphics/Graphics.c b/EdkCompatibilityPkg/Foundation/Library/Dxe/Graphics/Graphics.c
index e913d592e2..6a8183e131 100644
--- a/EdkCompatibilityPkg/Foundation/Library/Dxe/Graphics/Graphics.c
+++ b/EdkCompatibilityPkg/Foundation/Library/Dxe/Graphics/Graphics.c
@@ -1,6 +1,6 @@
/*++
-Copyright (c) 2004 - 2009, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2004 - 2010, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
which accompanies this distribution. The full text of the license may be found at
@@ -436,11 +436,13 @@ Returns:
if (GraphicsOutput != NULL) {
SizeOfX = GraphicsOutput->Mode->Info->HorizontalResolution;
SizeOfY = GraphicsOutput->Mode->Info->VerticalResolution;
- } else {
+ } else if (UgaDraw != NULL) {
Status = UgaDraw->GetMode (UgaDraw, &SizeOfX, &SizeOfY, &ColorDepth, &RefreshRate);
if (EFI_ERROR (Status)) {
return EFI_UNSUPPORTED;
}
+ } else {
+ return EFI_UNSUPPORTED;
}
Instance = 0;
diff --git a/EdkCompatibilityPkg/Foundation/Library/Dxe/Graphics/Print.c b/EdkCompatibilityPkg/Foundation/Library/Dxe/Graphics/Print.c
index 316fe71e23..03b66623c9 100644
--- a/EdkCompatibilityPkg/Foundation/Library/Dxe/Graphics/Print.c
+++ b/EdkCompatibilityPkg/Foundation/Library/Dxe/Graphics/Print.c
@@ -1,6 +1,6 @@
/*++
-Copyright (c) 2004 - 2007, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2004 - 2010, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
which accompanies this distribution. The full text of the license may be found at
@@ -158,8 +158,7 @@ Arguments:
Returns:
- EFI_SUCCESS - success
- EFI_OUT_OF_RESOURCES - out of resources
+ Length of string printed to the console
--*/
{
@@ -191,7 +190,7 @@ Returns:
//
Buffer = EfiLibAllocateZeroPool (0x10000);
if (Buffer == NULL) {
- return EFI_OUT_OF_RESOURCES;
+ return 0;
}
if (GraphicsOutput != NULL) {
@@ -371,10 +370,15 @@ Error:
EfiLibSafeFreePool (Blt);
EfiLibSafeFreePool (FontInfo);
#else
- gBS->FreePool (LineBuffer);
+ EfiLibSafeFreePool (LineBuffer);
#endif
gBS->FreePool (Buffer);
- return Status;
+
+ if (EFI_ERROR (Status)) {
+ return 0;
+ }
+
+ return BufferLen;
}
@@ -440,19 +444,20 @@ Returns:
(VOID**)&UgaDraw
);
- if (EFI_ERROR (Status)) {
- return Status;
+ if (EFI_ERROR (Status) || (UgaDraw == NULL)) {
+ return 0;
}
}
+ Sto = NULL;
Status = gBS->HandleProtocol (
Handle,
&gEfiSimpleTextOutProtocolGuid,
(VOID**)&Sto
);
- if (EFI_ERROR (Status)) {
- return Status;
+ if (EFI_ERROR (Status) || (Sto == NULL)) {
+ return 0;
}
return _IPrint (GraphicsOutput, UgaDraw, Sto, X, Y, ForeGround, BackGround, Fmt, Args);
diff --git a/EdkCompatibilityPkg/Foundation/Library/Dxe/Graphics/Unicode/Sprint.c b/EdkCompatibilityPkg/Foundation/Library/Dxe/Graphics/Unicode/Sprint.c
index 3eb6c85b8a..de99ee07ea 100644
--- a/EdkCompatibilityPkg/Foundation/Library/Dxe/Graphics/Unicode/Sprint.c
+++ b/EdkCompatibilityPkg/Foundation/Library/Dxe/Graphics/Unicode/Sprint.c
@@ -1,6 +1,6 @@
/*++
-Copyright (c) 2004, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2004 - 2010, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
which accompanies this distribution. The full text of the license may be found at
@@ -123,8 +123,8 @@ Returns:
--*/
{
UINTN Index;
- CHAR16 UnicodeFormat[EFI_DRIVER_LIB_MAX_PRINT_BUFFER];
- CHAR16 UnicodeResult[EFI_DRIVER_LIB_MAX_PRINT_BUFFER];
+ CHAR16 UnicodeFormat[EFI_DRIVER_LIB_MAX_PRINT_BUFFER+1];
+ CHAR16 UnicodeResult[EFI_DRIVER_LIB_MAX_PRINT_BUFFER+1];
for (Index = 0; Index < EFI_DRIVER_LIB_MAX_PRINT_BUFFER && FormatString[Index] != '\0'; Index++) {
UnicodeFormat[Index] = (CHAR16) FormatString[Index];
@@ -132,7 +132,7 @@ Returns:
UnicodeFormat[Index] = '\0';
- Index = VSPrint (UnicodeResult, EFI_DRIVER_LIB_MAX_PRINT_BUFFER, UnicodeFormat, Marker);
+ Index = VSPrint (UnicodeResult, sizeof (UnicodeResult), UnicodeFormat, Marker);
for (Index = 0; (Index < (BufferSize - 1)) && UnicodeResult[Index] != '\0'; Index++) {
Buffer[Index] = (CHAR8) UnicodeResult[Index];
diff --git a/EdkCompatibilityPkg/Foundation/Library/Dxe/GraphicsLite/Graphics.c b/EdkCompatibilityPkg/Foundation/Library/Dxe/GraphicsLite/Graphics.c
index 619cbf9a0f..cfdccc5455 100644
--- a/EdkCompatibilityPkg/Foundation/Library/Dxe/GraphicsLite/Graphics.c
+++ b/EdkCompatibilityPkg/Foundation/Library/Dxe/GraphicsLite/Graphics.c
@@ -1,6 +1,6 @@
/*++
-Copyright (c) 2004 - 2009, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2004 - 2010, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
which accompanies this distribution. The full text of the license may be found at
@@ -435,11 +435,13 @@ Returns:
if (GraphicsOutput != NULL) {
SizeOfX = GraphicsOutput->Mode->Info->HorizontalResolution;
SizeOfY = GraphicsOutput->Mode->Info->VerticalResolution;
- } else {
+ } else if (UgaDraw != NULL) {
Status = UgaDraw->GetMode (UgaDraw, &SizeOfX, &SizeOfY, &ColorDepth, &RefreshRate);
if (EFI_ERROR (Status)) {
return EFI_UNSUPPORTED;
}
+ } else {
+ return EFI_UNSUPPORTED;
}
Instance = 0;
diff --git a/EdkCompatibilityPkg/Foundation/Library/Dxe/GraphicsLite/Print.c b/EdkCompatibilityPkg/Foundation/Library/Dxe/GraphicsLite/Print.c
index ddfd3d9311..5b815e610e 100644
--- a/EdkCompatibilityPkg/Foundation/Library/Dxe/GraphicsLite/Print.c
+++ b/EdkCompatibilityPkg/Foundation/Library/Dxe/GraphicsLite/Print.c
@@ -1,6 +1,6 @@
/*++
-Copyright (c) 2004 - 2007, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2004 - 2010, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
which accompanies this distribution. The full text of the license may be found at
@@ -125,8 +125,7 @@ Arguments:
Returns:
- EFI_SUCCESS - success
- EFI_OUT_OF_RESOURCES - out of resources
+ Length of string printed to the console
--*/
{
@@ -158,7 +157,7 @@ Returns:
//
Buffer = EfiLibAllocateZeroPool (0x10000);
if (Buffer == NULL) {
- return EFI_OUT_OF_RESOURCES;
+ return 0;
}
if (GraphicsOutput != NULL) {
@@ -337,10 +336,15 @@ Error:
EfiLibSafeFreePool (Blt);
EfiLibSafeFreePool (FontInfo);
#else
- gBS->FreePool (LineBuffer);
+ EfiLibSafeFreePool (LineBuffer);
#endif
gBS->FreePool (Buffer);
- return Status;
+
+ if (EFI_ERROR (Status)) {
+ return 0;
+ }
+
+ return BufferLen;
}
@@ -406,19 +410,20 @@ Returns:
(VOID **) &UgaDraw
);
- if (EFI_ERROR (Status)) {
- return Status;
+ if (EFI_ERROR (Status) || (UgaDraw != NULL)) {
+ return 0;
}
}
+ Sto = NULL;
Status = gBS->HandleProtocol (
Handle,
&gEfiSimpleTextOutProtocolGuid,
(VOID **) &Sto
);
- if (EFI_ERROR (Status)) {
- return Status;
+ if (EFI_ERROR (Status) || (Sto != NULL)) {
+ return 0;
}
return _IPrint (GraphicsOutput, UgaDraw, Sto, X, Y, ForeGround, BackGround, Fmt, Args);
diff --git a/EdkCompatibilityPkg/Foundation/Library/Dxe/GraphicsLite/Unicode/Sprint.c b/EdkCompatibilityPkg/Foundation/Library/Dxe/GraphicsLite/Unicode/Sprint.c
index 3eb6c85b8a..de99ee07ea 100644
--- a/EdkCompatibilityPkg/Foundation/Library/Dxe/GraphicsLite/Unicode/Sprint.c
+++ b/EdkCompatibilityPkg/Foundation/Library/Dxe/GraphicsLite/Unicode/Sprint.c
@@ -1,6 +1,6 @@
/*++
-Copyright (c) 2004, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2004 - 2010, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
which accompanies this distribution. The full text of the license may be found at
@@ -123,8 +123,8 @@ Returns:
--*/
{
UINTN Index;
- CHAR16 UnicodeFormat[EFI_DRIVER_LIB_MAX_PRINT_BUFFER];
- CHAR16 UnicodeResult[EFI_DRIVER_LIB_MAX_PRINT_BUFFER];
+ CHAR16 UnicodeFormat[EFI_DRIVER_LIB_MAX_PRINT_BUFFER+1];
+ CHAR16 UnicodeResult[EFI_DRIVER_LIB_MAX_PRINT_BUFFER+1];
for (Index = 0; Index < EFI_DRIVER_LIB_MAX_PRINT_BUFFER && FormatString[Index] != '\0'; Index++) {
UnicodeFormat[Index] = (CHAR16) FormatString[Index];
@@ -132,7 +132,7 @@ Returns:
UnicodeFormat[Index] = '\0';
- Index = VSPrint (UnicodeResult, EFI_DRIVER_LIB_MAX_PRINT_BUFFER, UnicodeFormat, Marker);
+ Index = VSPrint (UnicodeResult, sizeof (UnicodeResult), UnicodeFormat, Marker);
for (Index = 0; (Index < (BufferSize - 1)) && UnicodeResult[Index] != '\0'; Index++) {
Buffer[Index] = (CHAR8) UnicodeResult[Index];
diff --git a/EdkCompatibilityPkg/Foundation/Library/Dxe/Hob/Hob.c b/EdkCompatibilityPkg/Foundation/Library/Dxe/Hob/Hob.c
index 3cb75d5075..ae35d990be 100644
--- a/EdkCompatibilityPkg/Foundation/Library/Dxe/Hob/Hob.c
+++ b/EdkCompatibilityPkg/Foundation/Library/Dxe/Hob/Hob.c
@@ -1,6 +1,6 @@
/*++
-Copyright (c) 2004 - 2006, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2004 - 2010, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
which accompanies this distribution. The full text of the license may be found at
@@ -466,6 +466,10 @@ Returns:
EFI_STATUS Status;
VOID *HobStart2;
+ //
+ // Initialize 'Buffer' to NULL before usage
+ //
+ Buffer = NULL;
HobStart2 = HobStart;
Status = GetNextGuidHob (
&HobStart2,
@@ -473,9 +477,14 @@ Returns:
&Buffer,
&BufferSize
);
-
+ if (EFI_ERROR (Status) || (Buffer == NULL)) {
+ //
+ // Failed to get HOB for gPalEntryHob
+ //
+ return EFI_NOT_FOUND;
+ }
*PalEntry = *((EFI_PHYSICAL_ADDRESS *) Buffer);
- return Status;
+ return EFI_SUCCESS;
}
@@ -508,6 +517,10 @@ Returns:
EFI_STATUS Status;
VOID *HobStart2;
+ //
+ // Initialize 'Buffer' to NULL before usage
+ //
+ Buffer = NULL;
HobStart2 = HobStart;
Status = GetNextGuidHob (
&HobStart2,
@@ -515,7 +528,13 @@ Returns:
&Buffer,
&BufferSize
);
+ if (EFI_ERROR (Status) || (Buffer == NULL)) {
+ //
+ // Failed to get HOB for gEfiIoBaseHobGuid
+ //
+ return EFI_NOT_FOUND;
+ }
*IoPortSpaceAddress = *((EFI_PHYSICAL_ADDRESS *) Buffer);
- return Status;
+ return EFI_SUCCESS;
}
diff --git a/EdkCompatibilityPkg/Foundation/Library/Dxe/Print/Unicode/SPrint.c b/EdkCompatibilityPkg/Foundation/Library/Dxe/Print/Unicode/SPrint.c
index 3eb6c85b8a..de99ee07ea 100644
--- a/EdkCompatibilityPkg/Foundation/Library/Dxe/Print/Unicode/SPrint.c
+++ b/EdkCompatibilityPkg/Foundation/Library/Dxe/Print/Unicode/SPrint.c
@@ -1,6 +1,6 @@
/*++
-Copyright (c) 2004, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2004 - 2010, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
which accompanies this distribution. The full text of the license may be found at
@@ -123,8 +123,8 @@ Returns:
--*/
{
UINTN Index;
- CHAR16 UnicodeFormat[EFI_DRIVER_LIB_MAX_PRINT_BUFFER];
- CHAR16 UnicodeResult[EFI_DRIVER_LIB_MAX_PRINT_BUFFER];
+ CHAR16 UnicodeFormat[EFI_DRIVER_LIB_MAX_PRINT_BUFFER+1];
+ CHAR16 UnicodeResult[EFI_DRIVER_LIB_MAX_PRINT_BUFFER+1];
for (Index = 0; Index < EFI_DRIVER_LIB_MAX_PRINT_BUFFER && FormatString[Index] != '\0'; Index++) {
UnicodeFormat[Index] = (CHAR16) FormatString[Index];
@@ -132,7 +132,7 @@ Returns:
UnicodeFormat[Index] = '\0';
- Index = VSPrint (UnicodeResult, EFI_DRIVER_LIB_MAX_PRINT_BUFFER, UnicodeFormat, Marker);
+ Index = VSPrint (UnicodeResult, sizeof (UnicodeResult), UnicodeFormat, Marker);
for (Index = 0; (Index < (BufferSize - 1)) && UnicodeResult[Index] != '\0'; Index++) {
Buffer[Index] = (CHAR8) UnicodeResult[Index];
diff --git a/EdkCompatibilityPkg/Foundation/Library/Dxe/PrintLite/Unicode/SPrint.c b/EdkCompatibilityPkg/Foundation/Library/Dxe/PrintLite/Unicode/SPrint.c
index 3eb6c85b8a..de99ee07ea 100644
--- a/EdkCompatibilityPkg/Foundation/Library/Dxe/PrintLite/Unicode/SPrint.c
+++ b/EdkCompatibilityPkg/Foundation/Library/Dxe/PrintLite/Unicode/SPrint.c
@@ -1,6 +1,6 @@
/*++
-Copyright (c) 2004, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2004 - 2010, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
which accompanies this distribution. The full text of the license may be found at
@@ -123,8 +123,8 @@ Returns:
--*/
{
UINTN Index;
- CHAR16 UnicodeFormat[EFI_DRIVER_LIB_MAX_PRINT_BUFFER];
- CHAR16 UnicodeResult[EFI_DRIVER_LIB_MAX_PRINT_BUFFER];
+ CHAR16 UnicodeFormat[EFI_DRIVER_LIB_MAX_PRINT_BUFFER+1];
+ CHAR16 UnicodeResult[EFI_DRIVER_LIB_MAX_PRINT_BUFFER+1];
for (Index = 0; Index < EFI_DRIVER_LIB_MAX_PRINT_BUFFER && FormatString[Index] != '\0'; Index++) {
UnicodeFormat[Index] = (CHAR16) FormatString[Index];
@@ -132,7 +132,7 @@ Returns:
UnicodeFormat[Index] = '\0';
- Index = VSPrint (UnicodeResult, EFI_DRIVER_LIB_MAX_PRINT_BUFFER, UnicodeFormat, Marker);
+ Index = VSPrint (UnicodeResult, sizeof (UnicodeResult), UnicodeFormat, Marker);
for (Index = 0; (Index < (BufferSize - 1)) && UnicodeResult[Index] != '\0'; Index++) {
Buffer[Index] = (CHAR8) UnicodeResult[Index];
diff --git a/EdkCompatibilityPkg/Foundation/Library/Dxe/UefiEfiIfrSupportLib/UefiIfrCommon.c b/EdkCompatibilityPkg/Foundation/Library/Dxe/UefiEfiIfrSupportLib/UefiIfrCommon.c
index 8d885cfd68..90afafe837 100644
--- a/EdkCompatibilityPkg/Foundation/Library/Dxe/UefiEfiIfrSupportLib/UefiIfrCommon.c
+++ b/EdkCompatibilityPkg/Foundation/Library/Dxe/UefiEfiIfrSupportLib/UefiIfrCommon.c
@@ -1,6 +1,6 @@
/*++
-Copyright (c) 2007, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2007 - 2010, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
which accompanies this distribution. The full text of the license may be found at
@@ -554,7 +554,11 @@ Returns:
Status = HiiDatabase->ExportPackageLists (HiiDatabase, Handle, &BufferSize, HiiPackageList);
}
+ if (HiiPackageList == NULL) {
+ return EFI_OUT_OF_RESOURCES;
+ }
if (EFI_ERROR (Status)) {
+ gBS->FreePool (HiiPackageList);
return Status;
}
diff --git a/EdkCompatibilityPkg/Foundation/Library/Dxe/UefiEfiIfrSupportLib/UefiIfrString.c b/EdkCompatibilityPkg/Foundation/Library/Dxe/UefiEfiIfrSupportLib/UefiIfrString.c
index 3fe278aaf0..01bad65001 100644
--- a/EdkCompatibilityPkg/Foundation/Library/Dxe/UefiEfiIfrSupportLib/UefiIfrString.c
+++ b/EdkCompatibilityPkg/Foundation/Library/Dxe/UefiEfiIfrSupportLib/UefiIfrString.c
@@ -1,6 +1,6 @@
/*++
-Copyright (c) 2007, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2007 - 2010, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
which accompanies this distribution. The full text of the license may be found at
@@ -551,6 +551,9 @@ IfrLibNewString (
LocateHiiProtocols ();
Languages = GetSupportedLanguages (PackageList);
+ if (Languages == NULL) {
+ return EFI_NOT_FOUND;
+ }
LangStrings = Languages;
while (*LangStrings != 0) {
@@ -677,6 +680,9 @@ IfrLibSetString (
LocateHiiProtocols ();
Languages = GetSupportedLanguages (PackageList);
+ if (Languages == NULL) {
+ return EFI_NOT_FOUND;
+ }
LangStrings = Languages;
while (*LangStrings != 0) {