diff options
author | Ruiyu Ni <ruiyu.ni@intel.com> | 2017-03-23 13:09:45 +0800 |
---|---|---|
committer | Ruiyu Ni <ruiyu.ni@intel.com> | 2017-03-23 13:11:32 +0800 |
commit | 647636e1750b07110ed807f455cb9c8b7d089f75 (patch) | |
tree | 419694eedf0c49ed821b93ba814d46b07ca30726 /Nt32Pkg | |
parent | 6ca29fa310d49dd0b224357de7990fd775b61d18 (diff) | |
download | edk2-647636e1750b07110ed807f455cb9c8b7d089f75.tar.gz edk2-647636e1750b07110ed807f455cb9c8b7d089f75.tar.bz2 edk2-647636e1750b07110ed807f455cb9c8b7d089f75.zip |
MdePkg/DevicePathLib: Fix FromText bug for multi-instance devicepath
UefiDevicePathLibConvertTextToDevicePath correctly detects when it
has hit a ',' splicing together multiple paths. However, the code
that tries to cope with it:
{code}
if (IsInstanceEnd) {
DeviceNode = (EFI_DEVICE_PATH_PROTOCOL *) AllocatePool (
END_DEVICE_PATH_LENGTH);
ASSERT (DeviceNode != NULL);
SetDevicePathEndNode (DeviceNode);
NewDevicePath = AppendDevicePathNode (DevicePath, DeviceNode);
FreePool (DevicePath);
FreePool (DeviceNode);
DevicePath = NewDevicePath;
}
{code}
causes a problem. The END node that's appended it the node for the
entire list. So when the node is appended in AppendDevicePathNode,
it winds up disappearing. This leads to the path
'PciRoot(0x0),PciRoot(0x0)' parsing as if 'PciRoot(0x0)/PciRoot(0x0)'
were specified. These are two very different things.
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Warner Losh <imp@bsdimp.com>
Reviewed-by: Ruiyu Ni <ruiyu.ni@intel.com>
Diffstat (limited to 'Nt32Pkg')
0 files changed, 0 insertions, 0 deletions