mirror of
https://git.savannah.gnu.org/git/grub.git
synced 2026-10-22 15:22:39 +00:00
osdep/aros/hostdisk: Fix use-after-free bug during MsgPort deletion
... in function grub_util_fd_open() when creation of an I/O request or opening a device fails. The "ret", the file descriptor, will be freed before its associated MsgPort is deleted resulting in a use-after-free condition. Fix this issue by freeing "ret" after its associated MsgPort has been deleted. Signed-off-by: Srish Srinivasan <ssrish@linux.ibm.com> Reviewed-by: Avnish Chouhan <avnish@linux.ibm.com> Reviewed-by: Sudhakar Kuppusamy <sudhakar@linux.ibm.com> Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
This commit is contained in:
1 parent
18f08826f9
commit
caaf50b9af
1 file changed
+3
-3
@@ -207,8 +207,8 @@ grub_util_fd_open (const char *dev, int flg)
|
|||||||
sizeof(struct IOExtTD));
|
sizeof(struct IOExtTD));
|
||||||
if (!ret->ioreq)
|
if (!ret->ioreq)
|
||||||
{
|
{
|
||||||
free (ret);
|
|
||||||
DeleteMsgPort (ret->mp);
|
DeleteMsgPort (ret->mp);
|
||||||
|
free (ret);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -225,9 +225,9 @@ grub_util_fd_open (const char *dev, int flg)
|
|||||||
if (OpenDevice ((unsigned char *) tmp, unit,
|
if (OpenDevice ((unsigned char *) tmp, unit,
|
||||||
(struct IORequest *) ret->ioreq, flags))
|
(struct IORequest *) ret->ioreq, flags))
|
||||||
{
|
{
|
||||||
free (tmp);
|
|
||||||
free (ret);
|
|
||||||
DeleteMsgPort (ret->mp);
|
DeleteMsgPort (ret->mp);
|
||||||
|
free (ret);
|
||||||
|
free (tmp);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
free (tmp);
|
free (tmp);
|
||||||
|
|||||||
Reference in new issue
Block a user