]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
util/grub-module-verifierXX: Add e_shoff check in get_shdr()
authorAlec Brown <alec.r.brown@oracle.com>
Thu, 26 May 2022 19:29:51 +0000 (15:29 -0400)
committerDaniel Kiper <daniel.kiper@oracle.com>
Tue, 7 Jun 2022 14:14:43 +0000 (16:14 +0200)
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>
util/grub-module-verifierXX.c

index 4e6cf133f8e8cf88fec288c0e1429c4170936abe..cf3ff0dfa27a36fe639d4f04319092e1dd2f9a99 100644 (file)
@@ -134,6 +134,9 @@ grub_target_to_host_real (const struct grub_module_verifier_arch *arch, grub_uin
 static Elf_Shdr *
 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) +
                       index * grub_target_to_host16 (e->e_shentsize));
 }