OvmfPkg/QemuBootOrderLib: allow slash in rom filenames

See comment for details.  Needed to avoid the parser abort,
so we can continue parsing the bootorder fw_cfg file.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Reviewed-by: Ard Biesheuvel <ardb@kernel.org>
This commit is contained in:
Gerd Hoffmann 2022-09-21 07:30:44 +02:00 committed by mergify[bot]
parent 2a0bd3bffc
commit d63242bd69
1 changed files with 18 additions and 1 deletions

View File

@ -432,6 +432,8 @@ ParseOfwNode (
OUT BOOLEAN *IsFinal
)
{
BOOLEAN AcceptSlash = FALSE;
//
// A leading slash is expected. End of string is tolerated.
//
@ -464,6 +466,21 @@ ParseOfwNode (
return RETURN_INVALID_PARAMETER;
}
if (SubstringEq (OfwNode->DriverName, "rom")) {
//
// bug compatibility hack
//
// qemu passes fw_cfg filenames as rom unit address.
// The filenames have slashes:
// /rom@genroms/linuxboot_dma.bin
//
// Alow slashes in the unit address to avoid the parser trip up,
// so we can successfully parse the following lines (the rom
// entries themself are ignored).
//
AcceptSlash = TRUE;
}
//
// unit-address
//
@ -475,7 +492,7 @@ ParseOfwNode (
OfwNode->UnitAddress.Ptr = *Ptr;
OfwNode->UnitAddress.Len = 0;
while (IsPrintNotDelim (**Ptr)) {
while (IsPrintNotDelim (**Ptr) || (AcceptSlash && **Ptr == '/')) {
++*Ptr;
++OfwNode->UnitAddress.Len;
}