util/grub-module-verifierXX: Add e_shoff check in get_shdr()
In util/grub-module-verifierXX.c, the function get_shdr() is used to obtain the section header at a given index but isn't checking that there is an offset for the section header table. To validate that there is, we can check that e_shoff isn't 0. Signed-off-by: Alec Brown <alec.r.brown@oracle.com> Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com> Reviewed-by: Darren Kenny <darren.kenny@oracle.com>
This commit is contained in:
parent
253da39c15
commit
27e53de2fd
@ -134,6 +134,9 @@ grub_target_to_host_real (const struct grub_module_verifier_arch *arch, grub_uin
|
|||||||
static Elf_Shdr *
|
static Elf_Shdr *
|
||||||
get_shdr (const struct grub_module_verifier_arch *arch, Elf_Ehdr *e, Elf_Word index)
|
get_shdr (const struct grub_module_verifier_arch *arch, Elf_Ehdr *e, Elf_Word index)
|
||||||
{
|
{
|
||||||
|
if (grub_target_to_host (e->e_shoff) == 0)
|
||||||
|
grub_util_error ("Invalid section header offset");
|
||||||
|
|
||||||
return (Elf_Shdr *) ((char *) e + grub_target_to_host (e->e_shoff) +
|
return (Elf_Shdr *) ((char *) e + grub_target_to_host (e->e_shoff) +
|
||||||
index * grub_target_to_host16 (e->e_shentsize));
|
index * grub_target_to_host16 (e->e_shentsize));
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user