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

Le ven. 3 mai 2024, 17:46, Mathieu Mirmont <m...@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 <m...@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
>
_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/grub-devel

Reply via email to