From: Eric Dong Date: Thu, 27 Oct 2016 06:16:53 +0000 (+0800) Subject: MdePkg UefiDevicePathLib: Rollback former change. X-Git-Tag: edk2-stable201903~5241 X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=commitdiff_plain;h=fb9405f9583a6ecf2048cdcc2e8d5621a3e68c75 MdePkg UefiDevicePathLib: Rollback former change. Former patch still has some bugs, so rollback it and enhance the original code. Cc: Ruiyu NI Reviewed-by: Jiewen Yao Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Eric Dong --- diff --git a/MdePkg/Library/UefiDevicePathLib/DevicePathUtilities.c b/MdePkg/Library/UefiDevicePathLib/DevicePathUtilities.c index 82419a4e1b..024dcc271d 100644 --- a/MdePkg/Library/UefiDevicePathLib/DevicePathUtilities.c +++ b/MdePkg/Library/UefiDevicePathLib/DevicePathUtilities.c @@ -61,35 +61,25 @@ IsDevicePathValid ( ASSERT (DevicePath != NULL); - if (MaxSize == 0){ - MaxSize = MAX_UINTN; - } - - Size = 0; - Count = 0; - - while (MaxSize >= sizeof (EFI_DEVICE_PATH_PROTOCOL) && - (MaxSize - sizeof (EFI_DEVICE_PATH_PROTOCOL) >= Size) && - !IsDevicePathEnd (DevicePath)) { + for (Count = 0, Size = 0; !IsDevicePathEnd (DevicePath); DevicePath = NextDevicePathNode (DevicePath)) { NodeLength = DevicePathNodeLength (DevicePath); if (NodeLength < sizeof (EFI_DEVICE_PATH_PROTOCOL)) { return FALSE; } - if (NodeLength > MAX_UINTN - Size) { - return FALSE; + if (MaxSize > 0) { + Size += NodeLength; + if (Size + END_DEVICE_PATH_LENGTH > MaxSize) { + return FALSE; + } } - Size += NodeLength; - if (PcdGet32 (PcdMaximumDevicePathNodeCount) > 0) { Count++; if (Count >= PcdGet32 (PcdMaximumDevicePathNodeCount)) { return FALSE; } } - - DevicePath = NextDevicePathNode (DevicePath); } //