grub2/grub-core/loader/i386
Peter Jones 9735a4b2f5 efi: fix some malformed device path arithmetic errors.
Several places we take the length of a device path and subtract 4 from
it, without ever checking that it's >= 4.  There are also cases where
this kind of malformation will result in unpredictable iteration,
including treating the length from one dp node as the type in the next
node.  These are all errors, no matter where the data comes from.

This patch adds a checking macro, GRUB_EFI_DEVICE_PATH_VALID(), which
can be used in several places, and makes GRUB_EFI_NEXT_DEVICE_PATH()
return NULL and GRUB_EFI_END_ENTIRE_DEVICE_PATH() evaluate as true when
the length is too small.  Additionally, it makes several places in the
code check for and return errors in these cases.

Signed-off-by: Peter Jones <pjones@redhat.com>

Patch-Name: efi-malformed-device-path.patch
2020-07-24 22:44:16 +01:00
..
coreboot verifiers: File type for fine-grained signature-verification controlling 2018-11-09 13:25:31 +01:00
efi Do not overwrite sentinel byte in boot_params, breaks lockdown 2020-03-07 12:21:23 +00:00
pc relocator: Protect grub_relocator_alloc_chunk_align() max_addr against integer underflow 2020-07-24 22:43:30 +01:00
bsd32.c automake commit without merge history 2010-05-06 11:34:04 +05:30
bsd64.c automake commit without merge history 2010-05-06 11:34:04 +05:30
bsd_pagetable.c * grub-core/commands/legacycfg.c (grub_cmd_legacy_kernel): 2010-10-16 22:16:52 +02:00
bsd.c malloc: Use overflow checking primitives where we do complex allocations 2020-07-24 22:42:22 +01:00
bsdXX.c calloc: Use calloc() at most places 2020-07-24 22:42:16 +01:00
linux.c relocator: Protect grub_relocator_alloc_chunk_align() max_addr against integer underflow 2020-07-24 22:43:30 +01:00
multiboot_mbi.c relocator: Protect grub_relocator_alloc_chunk_align() max_addr against integer underflow 2020-07-24 22:43:30 +01:00
xen_file32.c Add new ports: i386-xen and x86_64-xen. This allows running GRUB in 2013-11-09 21:29:11 +01:00
xen_file64.c Add new ports: i386-xen and x86_64-xen. This allows running GRUB in 2013-11-09 21:29:11 +01:00
xen_file.c verifiers: File type for fine-grained signature-verification controlling 2018-11-09 13:25:31 +01:00
xen_fileXX.c xen: Look for Xen notes in section headers too 2019-03-19 11:38:29 +01:00
xen.c relocator: Protect grub_relocator_alloc_chunk_addr() input args against integer underflow/overflow 2020-07-24 22:43:25 +01:00
xnu.c efi: fix some malformed device path arithmetic errors. 2020-07-24 22:44:16 +01:00