Ensure we have a full EFI_DEVICE_PATH header before we try to look at
its length. Some BIOSes pad the length of the device path to an even amount. When we had a device path that was somehow an odd length, we'd wind up having 1 byte left that we were bogusly interpreting as a full device path. We'd then dereference 2 bytes into that to get a length of the node, which had undefined (and quite undesired) effects. Sponsored by: Netflix, Inc MFC After: 3 days
This commit is contained in:
parent
366a7b3d0c
commit
df65fbc569
@ -349,7 +349,7 @@ match_boot_info(EFI_LOADED_IMAGE *img __unused, char *boot_info, size_t bisz)
|
||||
edp = (EFI_DEVICE_PATH *)(walker + fplen);
|
||||
if ((char *)edp > ep)
|
||||
return NOT_SPECIFIC;
|
||||
while (dp < edp) {
|
||||
while (dp < edp && (size_t)(edp - dp) > sizeof(EFI_DEVICE_PATH)) {
|
||||
text = efi_devpath_name(dp);
|
||||
if (text != NULL) {
|
||||
printf(" BootInfo Path: %S\n", text);
|
||||
|
Loading…
x
Reference in New Issue
Block a user