Re: [PATCH] aros/hostdisk: Fix use-after-free bug during MsgPort deletion

Avnish Chouhan <[email protected]> Tue, 09 Dec 2025 14:29:50 +0530
Newsgroups org.gnu.grub-devel
Message-ID <[email protected]>
On 2025-12-08 22:30, [email protected] wrote:
> Message: 1
> Date: Mon,  8 Dec 2025 15:51:29 +0530
> From: Srish Srinivasan <[email protected]>
> To: [email protected]
> Cc: [email protected], [email protected],
> 	[email protected], [email protected]
> Subject: [PATCH] aros/hostdisk: Fix use-after-free bug during MsgPort
> 	deletion
> Message-ID: <[email protected]>
> 
> Inside grub_util_fd_open, a failure while creating an IO
> request or opening a device frees ret (the fd) before its
> MsgPort is deleted. This leads to a use-after-free scenario.
> 
> Fix this by freeing ret after its MsgPort has been deleted.

Hi Srish,

Suggestion on commit message:

"In function grub_util_fd_open(), if creating an I/O request or opening 
a device fails. 'ret' (the file descriptor) will be freed before its 
associated MsgPort is deleted, resulting in a use-after-free condition.

Fixing this issue by freeing 'ret' after its associated MsgPort has been 
deleted."

> Signed-off-by: Srish Srinivasan <[email protected]>

Reviewed-by: Avnish Chouhan <[email protected]>

Regards,
Avnish Chouhan

> ---
>  grub-core/osdep/aros/hostdisk.c | 6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/grub-core/osdep/aros/hostdisk.c 
> b/grub-core/osdep/aros/hostdisk.c
> index 08723bd45..c75474933 100644
> --- a/grub-core/osdep/aros/hostdisk.c
> +++ b/grub-core/osdep/aros/hostdisk.c
> @@ -207,8 +207,8 @@ grub_util_fd_open (const char *dev, int flg)
>  						 sizeof(struct IOExtTD));
>    if (!ret->ioreq)
>      {
> -      free (ret);
>        DeleteMsgPort (ret->mp);
> +      free (ret);
>        return NULL;
>      }
> 
> @@ -225,9 +225,9 @@ grub_util_fd_open (const char *dev, int flg)
>    if (OpenDevice ((unsigned char *) tmp, unit,
>  		  (struct IORequest *) ret->ioreq, flags))
>      {
> -      free (tmp);
> -      free (ret);
>        DeleteMsgPort (ret->mp);
> +      free (ret);
> +      free (tmp);
>        return NULL;
>      }
>    free (tmp);
> --
> 2.43.0

_______________________________________________
Grub-devel mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/grub-devel