summaryrefslogtreecommitdiffstats
path: root/NetworkPkg/UefiPxeBcDxe
diff options
context:
space:
mode:
authorFu Siyuan <siyuan.fu@intel.com>2018-01-02 13:25:59 +0800
committerFu Siyuan <siyuan.fu@intel.com>2018-01-04 09:07:48 +0800
commitbee14e9ebc8db1cfa5ead35834df9a9d02101bda (patch)
tree0a71d3c56878a6ac520b2a8a5822640769d33770 /NetworkPkg/UefiPxeBcDxe
parent9d1c98e699af96ea5e4caf2610e18bf5e97dda3b (diff)
downloadedk2-bee14e9ebc8db1cfa5ead35834df9a9d02101bda.tar.gz
edk2-bee14e9ebc8db1cfa5ead35834df9a9d02101bda.tar.bz2
edk2-bee14e9ebc8db1cfa5ead35834df9a9d02101bda.zip
NetworkPkg: Update PXE driver to check for NULL pointer before use it.
This patch is to fix the issue that dereferencing of "This" (EFI_LOAD_FILE_PROTOCOL) in EfiPxeLoadFile() is happening before the NULL check. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Fu Siyuan <siyuan.fu@intel.com> Reviewed-by: Sriram Subramanian <sriram-s@hpe.com> Reviewed-by: Jiaxin Wu <jiaxin.wu@intel.com>
Diffstat (limited to 'NetworkPkg/UefiPxeBcDxe')
-rw-r--r--NetworkPkg/UefiPxeBcDxe/PxeBcImpl.c20
1 files changed, 8 insertions, 12 deletions
diff --git a/NetworkPkg/UefiPxeBcDxe/PxeBcImpl.c b/NetworkPkg/UefiPxeBcDxe/PxeBcImpl.c
index dc77d256f8..93f3bfa5ba 100644
--- a/NetworkPkg/UefiPxeBcDxe/PxeBcImpl.c
+++ b/NetworkPkg/UefiPxeBcDxe/PxeBcImpl.c
@@ -1,7 +1,7 @@
/** @file
This implementation of EFI_PXE_BASE_CODE_PROTOCOL and EFI_LOAD_FILE_PROTOCOL.
- Copyright (c) 2007 - 2017, Intel Corporation. All rights reserved.<BR>
+ Copyright (c) 2007 - 2018, 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
@@ -2349,26 +2349,22 @@ EfiPxeLoadFile (
EFI_STATUS Status;
EFI_STATUS MediaStatus;
- if (FilePath == NULL || !IsDevicePathEnd (FilePath)) {
+ if (This == NULL || BufferSize == NULL || FilePath == NULL || !IsDevicePathEnd (FilePath)) {
return EFI_INVALID_PARAMETER;
}
- VirtualNic = PXEBC_VIRTUAL_NIC_FROM_LOADFILE (This);
- Private = VirtualNic->Private;
- PxeBc = &Private->PxeBc;
- UsingIpv6 = FALSE;
- Status = EFI_DEVICE_ERROR;
-
- if (This == NULL || BufferSize == NULL) {
- return EFI_INVALID_PARAMETER;
- }
-
//
// Only support BootPolicy
//
if (!BootPolicy) {
return EFI_UNSUPPORTED;
}
+
+ VirtualNic = PXEBC_VIRTUAL_NIC_FROM_LOADFILE (This);
+ Private = VirtualNic->Private;
+ PxeBc = &Private->PxeBc;
+ UsingIpv6 = FALSE;
+ Status = EFI_DEVICE_ERROR;
//
// Check media status before PXE start