summaryrefslogtreecommitdiff
path: root/NetworkPkg/UefiPxeBcDxe/PxeBcDhcp6.c
diff options
context:
space:
mode:
authorsfu5 <sfu5@6f19259b-4bc3-4df7-8a09-765794883524>2011-09-09 08:31:08 +0000
committersfu5 <sfu5@6f19259b-4bc3-4df7-8a09-765794883524>2011-09-09 08:31:08 +0000
commiteb2710af5bee8637741d92ed8d32df562941e6d9 (patch)
tree23bfc4f54edfc31391c74814730eb8df2688f09d /NetworkPkg/UefiPxeBcDxe/PxeBcDhcp6.c
parentafc5448e18ee2c59146db45353b8893c3b612624 (diff)
downloadedk2-platforms-eb2710af5bee8637741d92ed8d32df562941e6d9.tar.xz
1. Support netboot6 tftp URL format like tftp://[aaaa::bbbb]/myfile.efi;mode=octet, other mode is rejected.
2. Fix bug in PXE driver UdpRead function to handle the IP fragmentation. Signed-off-by: sfu5 Reviewed-by: xdu2 Reviewed-by: hhuan13 git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@12308 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'NetworkPkg/UefiPxeBcDxe/PxeBcDhcp6.c')
-rw-r--r--NetworkPkg/UefiPxeBcDxe/PxeBcDhcp6.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/NetworkPkg/UefiPxeBcDxe/PxeBcDhcp6.c b/NetworkPkg/UefiPxeBcDxe/PxeBcDhcp6.c
index 92972f6706..c3ae23ec82 100644
--- a/NetworkPkg/UefiPxeBcDxe/PxeBcDhcp6.c
+++ b/NetworkPkg/UefiPxeBcDxe/PxeBcDhcp6.c
@@ -239,6 +239,7 @@ PxeBcExtractBootFileUrl (
CHAR8 TmpChar;
CHAR8 *ServerAddressOption;
CHAR8 *ServerAddress;
+ CHAR8 *ModeStr;
EFI_STATUS Status;
//
@@ -323,6 +324,17 @@ PxeBcExtractBootFileUrl (
BootFileNameLen = (UINT16)(Length - (UINT16) ((UINTN)BootFileNamePtr - (UINTN)TmpStr) + 1);
if (BootFileNameLen != 0 || FileName != NULL) {
//
+ // Remove trailing mode=octet if present and ignore. All other modes are
+ // invalid for netboot6, so reject them.
+ //
+ ModeStr = AsciiStrStr (BootFileNamePtr, ";mode=octet");
+ if (ModeStr != NULL && *(ModeStr + AsciiStrLen (";mode=octet")) == '\0') {
+ *ModeStr = '\0';
+ } else if (AsciiStrStr (BootFileNamePtr, ";mode=") != NULL) {
+ return EFI_INVALID_PARAMETER;
+ }
+
+ //
// Extract boot file name from URL.
//
BootFileName = (UINT8 *) AllocateZeroPool (BootFileNameLen);