grub_calloc already sets error variables. So you need to return grub_errno
and not call grub_error

Regards
Vladimir 'phcoder' Serbinenko

Le mer. 26 nov. 2025, 09:52, Avnish Chouhan <[email protected]> a écrit :

> Adding a failure check in grub_calloc(). If grub_calloc fails,
> (e.g., due to memory allocation failure), it returns NULL.
> Then, using grub_efiemu_elfsyms (which would be NULL)
> later will result in a null pointer dereference,
> and can cause an undefined behavior.
>
> Signed-off-by: Avnish Chouhan <[email protected]>
> ---
>  grub-core/efiemu/loadcore.c | 3 +++
>  1 file changed, 3 insertions(+)
>
> diff --git a/grub-core/efiemu/loadcore.c b/grub-core/efiemu/loadcore.c
> index 2b92462..5a6d244 100644
> --- a/grub-core/efiemu/loadcore.c
> +++ b/grub-core/efiemu/loadcore.c
> @@ -203,6 +203,9 @@ grub_efiemu_count_symbols (const Elf_Ehdr *e)
>    grub_efiemu_elfsyms = (struct grub_efiemu_elf_sym *)
>      grub_calloc (grub_efiemu_nelfsyms, sizeof (struct
> grub_efiemu_elf_sym));
>
> +  if (grub_efiemu_elfsyms == NULL)
> +    return grub_error (GRUB_ERR_OUT_OF_MEMORY, N_("out of memory"));
> +
>    /* Relocators */
>    for (i = 0, s = (Elf_Shdr *) ((char *) e + e->e_shoff);
>         i < e->e_shnum;
> --
> 2.46.0
>
>
> _______________________________________________
> Grub-devel mailing list
> [email protected]
> https://lists.gnu.org/mailman/listinfo/grub-devel
>
_______________________________________________
Grub-devel mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/grub-devel

Reply via email to