Add ASSERT() conditions to UEFI Library Print() and AsciiPrint() functions if gST->ConOut is NULL.

Add ASSERT() conditions to UEFI Library ErrorPrint() and AsciiErrorPrint() functions if gST->StdErr is NULL.
Add ASSERT() conditions to UEFI Library PrintXY() and AsciiPrintXY() gST->ConsoleOutputHandle is NULL.
Update Print(), AsciiPrint(), ErrorPrint(), AsciiErrorPrint() to return 0 if the Simple Text Output Protocol OutputString() call returns an error.



git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@10576 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
mdkinney 2010-06-11 19:11:20 +00:00
parent de243ee444
commit cda8ba5ed7
2 changed files with 32 additions and 8 deletions

View File

@ -986,6 +986,7 @@ EfiGetNameGuidFromFwVolDevicePathNode (
PcdUefiLibMaxPrintBufferSize characters are sent to ConOut. PcdUefiLibMaxPrintBufferSize characters are sent to ConOut.
If Format is NULL, then ASSERT(). If Format is NULL, then ASSERT().
If Format is not aligned on a 16-bit boundary, 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 Format A null-terminated Unicode format string.
@param ... The variable argument list whose contents are accessed based @param ... The variable argument list whose contents are accessed based
@ -1012,6 +1013,7 @@ Print (
PcdUefiLibMaxPrintBufferSize characters are sent to StdErr. PcdUefiLibMaxPrintBufferSize characters are sent to StdErr.
If Format is NULL, then ASSERT(). If Format is NULL, then ASSERT().
If Format is not aligned on a 16-bit boundary, 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 Format A null-terminated Unicode format string.
@param ... The variable argument list whose contents are accessed based @param ... The variable argument list whose contents are accessed based
@ -1037,6 +1039,7 @@ ErrorPrint (
string is greater than PcdUefiLibMaxPrintBufferSize, then only the first string is greater than PcdUefiLibMaxPrintBufferSize, then only the first
PcdUefiLibMaxPrintBufferSize characters are sent to ConOut. PcdUefiLibMaxPrintBufferSize characters are sent to ConOut.
If Format is NULL, then ASSERT(). If Format is NULL, then ASSERT().
If gST->ConOut is NULL, then ASSERT().
@param Format A null-terminated ASCII format string. @param Format A null-terminated ASCII format string.
@param ... The variable argument list whose contents are accessed based @param ... The variable argument list whose contents are accessed based
@ -1062,6 +1065,7 @@ AsciiPrint (
string is greater than PcdUefiLibMaxPrintBufferSize, then only the first string is greater than PcdUefiLibMaxPrintBufferSize, then only the first
PcdUefiLibMaxPrintBufferSize characters are sent to StdErr. PcdUefiLibMaxPrintBufferSize characters are sent to StdErr.
If Format is NULL, then ASSERT(). If Format is NULL, then ASSERT().
If gST->StdErr is NULL, then ASSERT().
@param Format A null-terminated ASCII format string. @param Format A null-terminated ASCII format string.
@param ... The variable argument list whose contents are accessed based @param ... The variable argument list whose contents are accessed based
@ -1098,6 +1102,7 @@ AsciiErrorPrint (
string is printed, and 0 is returned. string is printed, and 0 is returned.
If Format is NULL, then ASSERT(). If Format is NULL, then ASSERT().
If Format is not aligned on a 16-bit boundary, 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 PointX X coordinate to print the string.
@param PointY Y 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 If the EFI_HII_FONT_PROTOCOL is not present in the handle database, then no
string is printed, and 0 is returned. string is printed, and 0 is returned.
If Format is NULL, then ASSERT(). If Format is NULL, then ASSERT().
If gST->ConsoleOutputHandle is NULL, then ASSERT().
@param PointX X coordinate to print the string. @param PointX X coordinate to print the string.
@param PointY Y coordinate to print the string. @param PointY Y coordinate to print the string.

View File

@ -59,12 +59,14 @@ InternalPrint (
IN VA_LIST Marker IN VA_LIST Marker
) )
{ {
UINTN Return; EFI_STATUS Status;
CHAR16 *Buffer; UINTN Return;
UINTN BufferSize; CHAR16 *Buffer;
UINTN BufferSize;
ASSERT (Format != NULL); ASSERT (Format != NULL);
ASSERT (((UINTN) Format & BIT0) == 0); ASSERT (((UINTN) Format & BIT0) == 0);
ASSERT (Console != NULL);
BufferSize = (PcdGet32 (PcdUefiLibMaxPrintBufferSize) + 1) * sizeof (CHAR16); BufferSize = (PcdGet32 (PcdUefiLibMaxPrintBufferSize) + 1) * sizeof (CHAR16);
@ -77,7 +79,10 @@ InternalPrint (
// //
// To be extra safe make sure Console has been initialized // 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); FreePool (Buffer);
@ -96,6 +101,7 @@ InternalPrint (
PcdUefiLibMaxPrintBufferSize characters are sent to ConOut. PcdUefiLibMaxPrintBufferSize characters are sent to ConOut.
If Format is NULL, then ASSERT(). If Format is NULL, then ASSERT().
If Format is not aligned on a 16-bit boundary, 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 Format Null-terminated Unicode format string.
@param ... Variable argument list whose contents are accessed based @param ... Variable argument list whose contents are accessed based
@ -134,6 +140,7 @@ Print (
PcdUefiLibMaxPrintBufferSize characters are sent to StdErr. PcdUefiLibMaxPrintBufferSize characters are sent to StdErr.
If Format is NULL, then ASSERT(). If Format is NULL, then ASSERT().
If Format is not aligned on a 16-bit boundary, 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 Format Null-terminated Unicode format string.
@param ... Variable argument list whose contents are accessed based @param ... Variable argument list whose contents are accessed based
@ -188,11 +195,13 @@ AsciiInternalPrint (
IN VA_LIST Marker IN VA_LIST Marker
) )
{ {
UINTN Return; EFI_STATUS Status;
CHAR16 *Buffer; UINTN Return;
UINTN BufferSize; CHAR16 *Buffer;
UINTN BufferSize;
ASSERT (Format != NULL); ASSERT (Format != NULL);
ASSERT (Console != NULL);
BufferSize = (PcdGet32 (PcdUefiLibMaxPrintBufferSize) + 1) * sizeof (CHAR16); BufferSize = (PcdGet32 (PcdUefiLibMaxPrintBufferSize) + 1) * sizeof (CHAR16);
@ -205,7 +214,10 @@ AsciiInternalPrint (
// //
// To be extra safe make sure Console has been initialized // 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); FreePool (Buffer);
@ -223,6 +235,7 @@ AsciiInternalPrint (
string is greater than PcdUefiLibMaxPrintBufferSize, then only the first string is greater than PcdUefiLibMaxPrintBufferSize, then only the first
PcdUefiLibMaxPrintBufferSize characters are sent to ConOut. PcdUefiLibMaxPrintBufferSize characters are sent to ConOut.
If Format is NULL, then ASSERT(). If Format is NULL, then ASSERT().
If gST->ConOut is NULL, then ASSERT().
@param Format Null-terminated ASCII format string. @param Format Null-terminated ASCII format string.
@param ... Variable argument list whose contents are accessed based @param ... Variable argument list whose contents are accessed based
@ -261,6 +274,7 @@ AsciiPrint (
string is greater than PcdUefiLibMaxPrintBufferSize, then only the first string is greater than PcdUefiLibMaxPrintBufferSize, then only the first
PcdUefiLibMaxPrintBufferSize characters are sent to StdErr. PcdUefiLibMaxPrintBufferSize characters are sent to StdErr.
If Format is NULL, then ASSERT(). If Format is NULL, then ASSERT().
If gST->StdErr is NULL, then ASSERT().
@param Format Null-terminated ASCII format string. @param Format Null-terminated ASCII format string.
@param ... Variable argument list whose contents are accessed based @param ... Variable argument list whose contents are accessed based
@ -357,6 +371,8 @@ InternalPrintGraphic (
RowInfoArray = NULL; RowInfoArray = NULL;
ConsoleHandle = gST->ConsoleOutHandle; ConsoleHandle = gST->ConsoleOutHandle;
ASSERT( ConsoleHandle != NULL);
Status = gBS->HandleProtocol ( Status = gBS->HandleProtocol (
ConsoleHandle, ConsoleHandle,
@ -558,6 +574,7 @@ Error:
string is printed, and 0 is returned. string is printed, and 0 is returned.
If Format is NULL, then ASSERT(). If Format is NULL, then ASSERT().
If Format is not aligned on a 16-bit boundary, 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 PointX X coordinate to print the string.
@param PointY Y 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 If the EFI_HII_FONT_PROTOCOL is not present in the handle database, then no
string is printed, and 0 is returned. string is printed, and 0 is returned.
If Format is NULL, then ASSERT(). If Format is NULL, then ASSERT().
If gST->ConsoleOutputHandle is NULL, then ASSERT().
@param PointX X coordinate to print the string. @param PointX X coordinate to print the string.
@param PointY Y coordinate to print the string. @param PointY Y coordinate to print the string.