diff options
Diffstat (limited to 'MdePkg')
-rw-r--r-- | MdePkg/Include/Library/UefiLib.h | 6 | ||||
-rw-r--r-- | MdePkg/Library/UefiLib/UefiLibPrint.c | 34 |
2 files changed, 32 insertions, 8 deletions
diff --git a/MdePkg/Include/Library/UefiLib.h b/MdePkg/Include/Library/UefiLib.h index 6d557e11ca..5c28776277 100644 --- a/MdePkg/Include/Library/UefiLib.h +++ b/MdePkg/Include/Library/UefiLib.h @@ -986,6 +986,7 @@ EfiGetNameGuidFromFwVolDevicePathNode ( PcdUefiLibMaxPrintBufferSize characters are sent to ConOut.
If Format is NULL, then ASSERT().
If Format is not aligned on a 16-bit boundary, then ASSERT().
+ If gST->ConOut is NULL, then ASSERT().
@param Format A null-terminated Unicode format string.
@param ... The variable argument list whose contents are accessed based
@@ -1012,6 +1013,7 @@ Print ( PcdUefiLibMaxPrintBufferSize characters are sent to StdErr.
If Format is NULL, then ASSERT().
If Format is not aligned on a 16-bit boundary, then ASSERT().
+ If gST->StdErr is NULL, then ASSERT().
@param Format A null-terminated Unicode format string.
@param ... The variable argument list whose contents are accessed based
@@ -1037,6 +1039,7 @@ ErrorPrint ( string is greater than PcdUefiLibMaxPrintBufferSize, then only the first
PcdUefiLibMaxPrintBufferSize characters are sent to ConOut.
If Format is NULL, then ASSERT().
+ If gST->ConOut is NULL, then ASSERT().
@param Format A null-terminated ASCII format string.
@param ... The variable argument list whose contents are accessed based
@@ -1062,6 +1065,7 @@ AsciiPrint ( string is greater than PcdUefiLibMaxPrintBufferSize, then only the first
PcdUefiLibMaxPrintBufferSize characters are sent to StdErr.
If Format is NULL, then ASSERT().
+ If gST->StdErr is NULL, then ASSERT().
@param Format A null-terminated ASCII format string.
@param ... The variable argument list whose contents are accessed based
@@ -1098,6 +1102,7 @@ AsciiErrorPrint ( string is printed, and 0 is returned.
If Format is NULL, then ASSERT().
If Format is not aligned on a 16-bit boundary, then ASSERT().
+ If gST->ConsoleOutputHandle is NULL, then ASSERT().
@param PointX X coordinate to print the string.
@param PointY Y coordinate to print the string.
@@ -1147,6 +1152,7 @@ PrintXY ( If the EFI_HII_FONT_PROTOCOL is not present in the handle database, then no
string is printed, and 0 is returned.
If Format is NULL, then ASSERT().
+ If gST->ConsoleOutputHandle is NULL, then ASSERT().
@param PointX X coordinate to print the string.
@param PointY Y coordinate to print the string.
diff --git a/MdePkg/Library/UefiLib/UefiLibPrint.c b/MdePkg/Library/UefiLib/UefiLibPrint.c index 81d9b7b514..1c31ef1d5c 100644 --- a/MdePkg/Library/UefiLib/UefiLibPrint.c +++ b/MdePkg/Library/UefiLib/UefiLibPrint.c @@ -59,12 +59,14 @@ InternalPrint ( IN VA_LIST Marker
)
{
- UINTN Return;
- CHAR16 *Buffer;
- UINTN BufferSize;
+ EFI_STATUS Status;
+ UINTN Return;
+ CHAR16 *Buffer;
+ UINTN BufferSize;
ASSERT (Format != NULL);
ASSERT (((UINTN) Format & BIT0) == 0);
+ ASSERT (Console != NULL);
BufferSize = (PcdGet32 (PcdUefiLibMaxPrintBufferSize) + 1) * sizeof (CHAR16);
@@ -77,7 +79,10 @@ InternalPrint ( //
// To be extra safe make sure Console has been initialized
//
- Console->OutputString (Console, Buffer);
+ Status = Console->OutputString (Console, Buffer);
+ if (EFI_ERROR (Status)) {
+ Return = 0;
+ }
}
FreePool (Buffer);
@@ -96,6 +101,7 @@ InternalPrint ( PcdUefiLibMaxPrintBufferSize characters are sent to ConOut.
If Format is NULL, then ASSERT().
If Format is not aligned on a 16-bit boundary, then ASSERT().
+ If gST->ConOut is NULL, then ASSERT().
@param Format Null-terminated Unicode format string.
@param ... Variable argument list whose contents are accessed based
@@ -134,6 +140,7 @@ Print ( PcdUefiLibMaxPrintBufferSize characters are sent to StdErr.
If Format is NULL, then ASSERT().
If Format is not aligned on a 16-bit boundary, then ASSERT().
+ If gST->StdErr is NULL, then ASSERT().
@param Format Null-terminated Unicode format string.
@param ... Variable argument list whose contents are accessed based
@@ -188,11 +195,13 @@ AsciiInternalPrint ( IN VA_LIST Marker
)
{
- UINTN Return;
- CHAR16 *Buffer;
- UINTN BufferSize;
+ EFI_STATUS Status;
+ UINTN Return;
+ CHAR16 *Buffer;
+ UINTN BufferSize;
ASSERT (Format != NULL);
+ ASSERT (Console != NULL);
BufferSize = (PcdGet32 (PcdUefiLibMaxPrintBufferSize) + 1) * sizeof (CHAR16);
@@ -205,7 +214,10 @@ AsciiInternalPrint ( //
// To be extra safe make sure Console has been initialized
//
- Console->OutputString (Console, Buffer);
+ Status = Console->OutputString (Console, Buffer);
+ if (EFI_ERROR (Status)) {
+ Return = 0;
+ }
}
FreePool (Buffer);
@@ -223,6 +235,7 @@ AsciiInternalPrint ( string is greater than PcdUefiLibMaxPrintBufferSize, then only the first
PcdUefiLibMaxPrintBufferSize characters are sent to ConOut.
If Format is NULL, then ASSERT().
+ If gST->ConOut is NULL, then ASSERT().
@param Format Null-terminated ASCII format string.
@param ... Variable argument list whose contents are accessed based
@@ -261,6 +274,7 @@ AsciiPrint ( string is greater than PcdUefiLibMaxPrintBufferSize, then only the first
PcdUefiLibMaxPrintBufferSize characters are sent to StdErr.
If Format is NULL, then ASSERT().
+ If gST->StdErr is NULL, then ASSERT().
@param Format Null-terminated ASCII format string.
@param ... Variable argument list whose contents are accessed based
@@ -357,6 +371,8 @@ InternalPrintGraphic ( RowInfoArray = NULL;
ConsoleHandle = gST->ConsoleOutHandle;
+
+ ASSERT( ConsoleHandle != NULL);
Status = gBS->HandleProtocol (
ConsoleHandle,
@@ -558,6 +574,7 @@ Error: string is printed, and 0 is returned.
If Format is NULL, then ASSERT().
If Format is not aligned on a 16-bit boundary, then ASSERT().
+ If gST->ConsoleOutputHandle is NULL, then ASSERT().
@param PointX X coordinate to print the string.
@param PointY Y coordinate to print the string.
@@ -634,6 +651,7 @@ PrintXY ( If the EFI_HII_FONT_PROTOCOL is not present in the handle database, then no
string is printed, and 0 is returned.
If Format is NULL, then ASSERT().
+ If gST->ConsoleOutputHandle is NULL, then ASSERT().
@param PointX X coordinate to print the string.
@param PointY Y coordinate to print the string.
|