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.
|
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 DevicePath A pointer to a device path data structure.
|
||||||
@param MaxSize The maximum size of the device path data structure.
|
@param MaxSize The maximum size of the device path data structure.
|
||||||
|
|
||||||
@retval TRUE DevicePath is valid.
|
@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
|
@retval FALSE The length of any node node in the DevicePath is less
|
||||||
than sizeof (EFI_DEVICE_PATH_PROTOCOL).
|
than sizeof (EFI_DEVICE_PATH_PROTOCOL).
|
||||||
@retval FALSE If MaxSize is not zero, the size of the DevicePath
|
@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.
|
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 DevicePath A pointer to a device path data structure.
|
||||||
@param MaxSize The maximum size of the device path data structure.
|
@param MaxSize The maximum size of the device path data structure.
|
||||||
|
|
||||||
@retval TRUE DevicePath is valid.
|
@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
|
@retval FALSE The length of any node node in the DevicePath is less
|
||||||
than sizeof (EFI_DEVICE_PATH_PROTOCOL).
|
than sizeof (EFI_DEVICE_PATH_PROTOCOL).
|
||||||
@retval FALSE If MaxSize is not zero, the size of the DevicePath
|
@retval FALSE If MaxSize is not zero, the size of the DevicePath
|
||||||
|
@ -59,19 +60,17 @@ IsDevicePathValid (
|
||||||
UINTN Size;
|
UINTN Size;
|
||||||
UINTN NodeLength;
|
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) {
|
if (MaxSize == 0) {
|
||||||
MaxSize = MAX_UINTN;
|
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)) {
|
for (Count = 0, Size = 0; !IsDevicePathEnd (DevicePath); DevicePath = NextDevicePathNode (DevicePath)) {
|
||||||
NodeLength = DevicePathNodeLength (DevicePath);
|
NodeLength = DevicePathNodeLength (DevicePath);
|
||||||
if (NodeLength < sizeof (EFI_DEVICE_PATH_PROTOCOL)) {
|
if (NodeLength < sizeof (EFI_DEVICE_PATH_PROTOCOL)) {
|
||||||
|
|
Loading…
Reference in New Issue