NetworkPkg/HttpBootDxe: Avoid to corrupt HttpBootDxe setup screen.

When giving an invalid URI in Boot URI field within HTTP Boot
configuration page, the AsciiPrint will corrupt the setup screen.

This patch is to resolve the issue.

Cc: Fu Siyuan <siyuan.fu@intel.com>
Cc: Ye Ting <ting.ye@intel.com>
Cc: Jiaxin Wu <jiaxin.wu@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Karunakar P <karunakarp@amiindia.co.in>
Reviewed-by: Jiaxin Wu <jiaxin.wu@intel.com>
This commit is contained in:
Jiaxin Wu 2018-01-17 11:25:41 +08:00
parent 6945837e4c
commit 7ee089f604
2 changed files with 10 additions and 2 deletions

View File

@ -238,6 +238,11 @@ HttpBootDhcp4ExtractUriInfo (
Status = HttpBootCheckUriScheme (Private->BootFileUri); Status = HttpBootCheckUriScheme (Private->BootFileUri);
if (EFI_ERROR (Status)) { if (EFI_ERROR (Status)) {
DEBUG ((EFI_D_ERROR, "HttpBootDhcp4ExtractUriInfo: %r.\n", Status)); DEBUG ((EFI_D_ERROR, "HttpBootDhcp4ExtractUriInfo: %r.\n", Status));
if (Status == EFI_INVALID_PARAMETER) {
AsciiPrint ("\n Error: Invalid URI address.\n");
} else if (Status == EFI_ACCESS_DENIED) {
AsciiPrint ("\n Error: Access forbidden, only HTTPS connection is allowed.\n");
}
return Status; return Status;
} }
@ -373,6 +378,11 @@ HttpBootDhcp6ExtractUriInfo (
Status = HttpBootCheckUriScheme (Private->BootFileUri); Status = HttpBootCheckUriScheme (Private->BootFileUri);
if (EFI_ERROR (Status)) { if (EFI_ERROR (Status)) {
DEBUG ((EFI_D_ERROR, "HttpBootDhcp6ExtractUriInfo: %r.\n", Status)); DEBUG ((EFI_D_ERROR, "HttpBootDhcp6ExtractUriInfo: %r.\n", Status));
if (Status == EFI_INVALID_PARAMETER) {
AsciiPrint ("\n Error: Invalid URI address.\n");
} else if (Status == EFI_ACCESS_DENIED) {
AsciiPrint ("\n Error: Access forbidden, only HTTPS connection is allowed.\n");
}
return Status; return Status;
} }

View File

@ -1093,7 +1093,6 @@ HttpBootCheckUriScheme (
// Return EFI_INVALID_PARAMETER if the URI is not HTTP or HTTPS. // Return EFI_INVALID_PARAMETER if the URI is not HTTP or HTTPS.
// //
if ((AsciiStrnCmp (Uri, "http://", 7) != 0) && (AsciiStrnCmp (Uri, "https://", 8) != 0)) { if ((AsciiStrnCmp (Uri, "http://", 7) != 0) && (AsciiStrnCmp (Uri, "https://", 8) != 0)) {
AsciiPrint ("\n Error: Invalid URI address.\n");
DEBUG ((EFI_D_ERROR, "HttpBootCheckUriScheme: Invalid Uri.\n")); DEBUG ((EFI_D_ERROR, "HttpBootCheckUriScheme: Invalid Uri.\n"));
return EFI_INVALID_PARAMETER; return EFI_INVALID_PARAMETER;
} }
@ -1102,7 +1101,6 @@ HttpBootCheckUriScheme (
// HTTP is disabled, return EFI_ACCESS_DENIED if the URI is HTTP. // HTTP is disabled, return EFI_ACCESS_DENIED if the URI is HTTP.
// //
if (!PcdGetBool (PcdAllowHttpConnections) && (AsciiStrnCmp (Uri, "http://", 7) == 0)) { if (!PcdGetBool (PcdAllowHttpConnections) && (AsciiStrnCmp (Uri, "http://", 7) == 0)) {
AsciiPrint ("\n Error: Access forbidden, only HTTPS connection is allowed.\n");
DEBUG ((EFI_D_ERROR, "HttpBootCheckUriScheme: HTTP is disabled.\n")); DEBUG ((EFI_D_ERROR, "HttpBootCheckUriScheme: HTTP is disabled.\n"));
return EFI_ACCESS_DENIED; return EFI_ACCESS_DENIED;
} }