Reviewed-by: Liming Gao <liming....@intel.com>
> -----Original Message----- > From: edk2-devel [mailto:edk2-devel-boun...@lists.01.org] On Behalf Of > Shenglei Zhang > Sent: Wednesday, December 12, 2018 11:10 AM > To: edk2-devel@lists.01.org > Cc: Gao, Liming <liming....@intel.com> > Subject: [edk2] [PATCH v2 2/2] BaseTools/DevicePath: 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: Bob Feng <bob.c.f...@intel.com> > Cc: Liming Gao <liming....@intel.com> > Cc: Yonghong Zhu <yonghong....@intel.com> > Contributed-under: TianoCore Contribution Agreement 1.1 > Signed-off-by: Shenglei Zhang <shenglei.zh...@intel.com> > --- > .../Source/C/DevicePath/DevicePathUtilities.c | 17 ++++++++--------- > 1 file changed, 8 insertions(+), 9 deletions(-) > > diff --git a/BaseTools/Source/C/DevicePath/DevicePathUtilities.c > b/BaseTools/Source/C/DevicePath/DevicePathUtilities.c > index f8a41ff97d..e0399cfea7 100644 > --- a/BaseTools/Source/C/DevicePath/DevicePathUtilities.c > +++ b/BaseTools/Source/C/DevicePath/DevicePathUtilities.c > @@ -36,12 +36,13 @@ CONST EFI_DEVICE_PATH_PROTOCOL > mUefiDevicePathLibEndDevicePath = { > > /** > 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,17 +60,15 @@ 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_UINT32; > - } > - > - // > - // 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)) { > -- > 2.18.0.windows.1 > > _______________________________________________ > edk2-devel mailing list > edk2-devel@lists.01.org > https://lists.01.org/mailman/listinfo/edk2-devel _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel