Ray, I totally agree about the fact the ASSERT() will detect the corrupted Device Path when the ASSERT is enabled. But today or with your patch a corrupted EFI Device Path might make hung a UEFI Firmware ... Thanks, Olivier ________________________________________ From: Ni, Ruiyu [[email protected]] Sent: 18 July 2012 11:35 To: [email protected] Cc: 'Tim Lewis' Subject: Re: [edk2] MdePkg/UefiDevicePathLib: Potential lock in the loop to go to the end of a EFI Device Path
Olivier, The reason of the hang can easily be seen due to the ASSERT(). And I intended to only do the check in DEBUG mode because the PCD for count of device path node in a device path is hard to define. The 3rd party UEFI OpROMs can create their own device path. Spec doesn't restrict the device path node count. Thanks, Ray -----Original Message----- From: Olivier Martin [mailto:[email protected]] Sent: Thursday, July 12, 2012 5:41 PM To: [email protected] Cc: 'Tim Lewis' Subject: Re: [edk2] MdePkg/UefiDevicePathLib: Potential lock in the loop to go to the end of a EFI Device Path Sorry Ray, I missed your email. The issue with your patch is you do not handle the error in your code. You only have 'ASSERT()'. It means if the DevicePath is corrupted your platform still hang (in this case due to the ASSERT()). And if you have disabled ASSERT() macro in your DSC file it will still lock. Olivier -----Original Message----- From: Ni, Ruiyu [mailto:[email protected]] Sent: 05 July 2012 04:06 To: [email protected] Cc: 'Tim Lewis' Subject: Re: [edk2] MdePkg/UefiDevicePathLib: Potential lock in the loop to go to the end of a EFI Device Path Olivier, I read your patch and comes with a refined one. Could you please check whether it meets your needs? The patch aligns to the current checking pattern in LinkedList.c and it only does the check in DEBUG mode as well. Thanks, Ray -----Original Message----- From: Olivier Martin [mailto:[email protected]] Sent: Thursday, July 05, 2012 2:22 AM To: [email protected] Cc: 'Tim Lewis' Subject: Re: [edk2] MdePkg/UefiDevicePathLib: Potential lock in the loop to go to the end of a EFI Device Path Ray, Please find the patch I submitted in a different thread of the EDK2 development mailing-list. Regards, Olivier -----Original Message----- From: Ni, Ruiyu [mailto:[email protected]] Sent: 21 June 2012 02:32 To: [email protected] Subject: Re: [edk2] MdePkg/UefiDevicePathLib: Potential lock in the loop to go to the end of a EFI Device Path Olivier, I agree with your concern. Do you have any suggestion? Thanks, Ray -----Original Message----- From: Olivier Martin [mailto:[email protected]] Sent: Wednesday, June 20, 2012 10:03 PM To: [email protected] Subject: [edk2] MdePkg/UefiDevicePathLib: Potential lock in the loop to go to the end of a EFI Device Path Hello, The loop is this one: Start = DevicePath; while (!IsDevicePathEnd (DevicePath)) { DevicePath = NextDevicePathNode (DevicePath); } This loop exists in different forms in these functions: GetNextDevicePathInstance (), GetDevicePathSize (), IsDevicePathMultiInstance (). For some reasons, my EFI environment variables have been corrupted. And the Device Path attached to one of the variables did not make sense anymore. One of the functions above was scanning for the end of the Device Path (type: END_DEVICE_PATH_TYPE). Unfortunately, the corrupted EFI Device Path Node has the length '0'. So the function NextDevicePathNode() always returns the same Node (and locked the UEFI firmware). How should we fix the manipulation of a corrupted Device Path Node ? Should we introduce a function to check the validity of Device Path (eg: by checking the length of a Device Path is valid against a maximum size) ? Or should we modify the loops above to avoid a lock ? Regards, Olivier ---------------------------------------------------------------------------- -- Live Security Virtual Conference Exclusive live event will cover all the ways today's security and threat landscape has changed and how IT managers can respond. Discussions will include endpoint security, mobile security and the latest in malware threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/ _______________________________________________ edk2-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/edk2-devel ---------------------------------------------------------------------------- -- Live Security Virtual Conference Exclusive live event will cover all the ways today's security and threat landscape has changed and how IT managers can respond. Discussions will include endpoint security, mobile security and the latest in malware threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/ _______________________________________________ edk2-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/edk2-devel ------------------------------------------------------------------------------ Live Security Virtual Conference Exclusive live event will cover all the ways today's security and threat landscape has changed and how IT managers can respond. Discussions will include endpoint security, mobile security and the latest in malware threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/ _______________________________________________ edk2-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/edk2-devel ------------------------------------------------------------------------------ Live Security Virtual Conference Exclusive live event will cover all the ways today's security and threat landscape has changed and how IT managers can respond. Discussions will include endpoint security, mobile security and the latest in malware threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/ _______________________________________________ edk2-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/edk2-devel -- IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you. ------------------------------------------------------------------------------ Live Security Virtual Conference Exclusive live event will cover all the ways today's security and threat landscape has changed and how IT managers can respond. Discussions will include endpoint security, mobile security and the latest in malware threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/ _______________________________________________ edk2-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/edk2-devel
