grub-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH] elf: accept elf files without section header table


From: Vladimir 'phcoder' Serbinenko
Subject: Re: [PATCH] elf: accept elf files without section header table
Date: Fri, 3 May 2024 19:42:04 +0300

Hey. Can you describe what exactly are you trying to solve?

Le ven. 3 mai 2024, 17:46, Mathieu Mirmont <mat@neutrality.ch> a écrit :
It isn't an error for an elf executable to be lacking a section header
table. In this case we should just be returning shnum = 0.

According to the elf(5) manual page:
"
e_shoff  This member holds the section header table's file offset in
           bytes. If the file has no section header table, this member
           holds zero.
"

Signed-off-by: Mathieu Mirmont <mat@neutrality.ch>
---
  grub-core/kern/elfXX.c | 6 +++---
  1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/grub-core/kern/elfXX.c b/grub-core/kern/elfXX.c
index aabf4b9d7..fe4ffb261 100644
--- a/grub-core/kern/elfXX.c
+++ b/grub-core/kern/elfXX.c
@@ -220,12 +220,12 @@ grub_elfXX_get_shnum (ElfXX_Ehdr *e, ElfXX_Shnum
*shnum)
    if (e == NULL)
      return grub_error (GRUB_ERR_BAD_ARGUMENT, N_("NULL pointer passed
for elf header"));

+  if (e->e_shoff == 0)
+    return GRUB_ERR_NONE;
+
    *shnum = e->e_shnum;
    if (*shnum == SHN_UNDEF)
      {
-      if (e->e_shoff == 0)
-       
return grub_error (GRUB_ERR_BAD_NUMBER, N_("invalid section header
table offset in e_shoff"));
-
        s = (ElfXX_Shdr *) ((grub_uint8_t *) e + e->e_shoff);
        *shnum = s->sh_size;
        if (*shnum < SHN_LORESERVE)
--
2.30.2
_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/grub-devel

reply via email to

[Prev in Thread] Current Thread [Next in Thread]