]> git.proxmox.com Git - mirror_edk2.git/commit
MdePkg/DevicePathLib: Fix FromText bug for multi-instance devicepath
authorRuiyu Ni <ruiyu.ni@intel.com>
Thu, 23 Mar 2017 05:09:45 +0000 (13:09 +0800)
committerRuiyu Ni <ruiyu.ni@intel.com>
Thu, 23 Mar 2017 05:11:32 +0000 (13:11 +0800)
commit647636e1750b07110ed807f455cb9c8b7d089f75
tree419694eedf0c49ed821b93ba814d46b07ca30726
parent6ca29fa310d49dd0b224357de7990fd775b61d18
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>
MdePkg/Library/UefiDevicePathLib/DevicePathFromText.c