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>
This commit is contained in:
Fu Siyuan 2018-01-02 13:25:59 +08:00
parent 9d1c98e699
commit bee14e9ebc

View File

@ -1,7 +1,7 @@
/** @file /** @file
This implementation of EFI_PXE_BASE_CODE_PROTOCOL and EFI_LOAD_FILE_PROTOCOL. 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 This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License are licensed and made available under the terms and conditions of the BSD License
@ -2349,17 +2349,7 @@ EfiPxeLoadFile (
EFI_STATUS Status; EFI_STATUS Status;
EFI_STATUS MediaStatus; 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; return EFI_INVALID_PARAMETER;
} }
@ -2370,6 +2360,12 @@ EfiPxeLoadFile (
return EFI_UNSUPPORTED; 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 // Check media status before PXE start
// //