mirror of https://github.com/acidanthera/audk.git
MdePkg/UefiDevicePathLib: Add a checking step
Add a checking step in DevicePathUtilities.c to verify DevicePath. https://bugzilla.tianocore.org/show_bug.cgi?id=1372 v2: Remove ASSERT() and the redundant checking step. Update related description. Cc: Liming Gao <liming.gao@intel.com> Cc: Michael D Kinney <michael.d.kinney@intel.com> Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Shenglei Zhang <shenglei.zhang@intel.com> Reviewed-by: Liming Gao <liming.gao@intel.com> Reviewed-by: Ruiyu Ni <ruiyu.ni@intel.com>
This commit is contained in:
parent
3d086fed73
commit
fd02394228
|
@ -22,12 +22,13 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
|||
|
||||
/**
|
||||
Determine whether a given device path is valid.
|
||||
If DevicePath is NULL, then ASSERT().
|
||||
|
||||
@param DevicePath A pointer to a device path data structure.
|
||||
@param MaxSize The maximum size of the device path data structure.
|
||||
|
||||
@retval TRUE DevicePath is valid.
|
||||
@retval FALSE DevicePath is NULL.
|
||||
@retval FALSE Maxsize is less than sizeof(EFI_DEVICE_PATH_PROTOCOL).
|
||||
@retval FALSE The length of any node node in the DevicePath is less
|
||||
than sizeof (EFI_DEVICE_PATH_PROTOCOL).
|
||||
@retval FALSE If MaxSize is not zero, the size of the DevicePath
|
||||
|
|
|
@ -35,12 +35,13 @@ GLOBAL_REMOVE_IF_UNREFERENCED CONST EFI_DEVICE_PATH_PROTOCOL mUefiDevicePathLib
|
|||
|
||||
/**
|
||||
Determine whether a given device path is valid.
|
||||
If DevicePath is NULL, then ASSERT().
|
||||
|
||||
@param DevicePath A pointer to a device path data structure.
|
||||
@param MaxSize The maximum size of the device path data structure.
|
||||
|
||||
@retval TRUE DevicePath is valid.
|
||||
@retval FALSE DevicePath is NULL.
|
||||
@retval FALSE Maxsize is less than sizeof(EFI_DEVICE_PATH_PROTOCOL).
|
||||
@retval FALSE The length of any node node in the DevicePath is less
|
||||
than sizeof (EFI_DEVICE_PATH_PROTOCOL).
|
||||
@retval FALSE If MaxSize is not zero, the size of the DevicePath
|
||||
|
@ -59,19 +60,17 @@ IsDevicePathValid (
|
|||
UINTN Size;
|
||||
UINTN NodeLength;
|
||||
|
||||
ASSERT (DevicePath != NULL);
|
||||
//
|
||||
//Validate the input whether exists and its size big enough to touch the first node
|
||||
//
|
||||
if (DevicePath == NULL || (MaxSize > 0 && MaxSize < END_DEVICE_PATH_LENGTH)) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (MaxSize == 0) {
|
||||
MaxSize = MAX_UINTN;
|
||||
}
|
||||
|
||||
//
|
||||
// Validate the input size big enough to touch the first node.
|
||||
//
|
||||
if (MaxSize < sizeof (EFI_DEVICE_PATH_PROTOCOL)) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
for (Count = 0, Size = 0; !IsDevicePathEnd (DevicePath); DevicePath = NextDevicePathNode (DevicePath)) {
|
||||
NodeLength = DevicePathNodeLength (DevicePath);
|
||||
if (NodeLength < sizeof (EFI_DEVICE_PATH_PROTOCOL)) {
|
||||
|
|
Loading…
Reference in New Issue