mirror of https://github.com/acidanthera/audk.git
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:
parent
2a0bd3bffc
commit
d63242bd69
|
@ -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;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue