From: Sudhakar Kuppusamy <sudhakar@linux.ibm.com>
To: grub-devel@gnu.org
Cc: Sudhakar Kuppusamy <sudhakar@linux.ibm.com>,
ssrish@linux.ibm.com, sridharm@linux.ibm.com,
stefanb@linux.ibm.com
Subject: [PATCH v1] linux/ofpath: Add missing strdup failure checks
Date: Wed, 19 Nov 2025 15:29:43 +0530 [thread overview]
Message-ID: <20251119095943.6428-1-sudhakar@linux.ibm.com> (raw)
Segmentation faults or undefined behaviour may result from a null pointer
dereference in strip_trailing_digits and grub_util_devname_to_ofpath if
strdup() fails. Therefore, I added a NULL check to fix this.
Signed-off-by: Sudhakar Kuppusamy <sudhakar@linux.ibm.com>
Reviewed-by: Srish Srinivasan <ssrish@linux.ibm.com>
---
grub-core/osdep/linux/ofpath.c | 14 ++++++++++++--
1 file changed, 12 insertions(+), 2 deletions(-)
diff --git a/grub-core/osdep/linux/ofpath.c b/grub-core/osdep/linux/ofpath.c
index a6153d359..a3747b248 100644
--- a/grub-core/osdep/linux/ofpath.c
+++ b/grub-core/osdep/linux/ofpath.c
@@ -695,6 +695,9 @@ strip_trailing_digits (const char *p)
char *new, *end;
new = strdup (p);
+ if (new == NULL)
+ return NULL;
+
end = new + strlen(new) - 1;
while (end >= new)
{
@@ -709,13 +712,18 @@ strip_trailing_digits (const char *p)
char *
grub_util_devname_to_ofpath (const char *sys_devname)
{
- char *name_buf, *device, *devnode, *devicenode, *ofpath;
+ char *name_buf, *device, *devnode, *devicenode, *ofpath = NULL;
name_buf = xrealpath (sys_devname);
device = get_basename (name_buf);
devnode = strip_trailing_digits (name_buf);
+ if (devnode == NULL)
+ goto devnode_fail
+
devicenode = strip_trailing_digits (device);
+ if (devicenode == NULL)
+ goto devicenode_fail;
if (device[0] == 'h' && device[1] == 'd')
ofpath = of_path_of_ide(name_buf, device, devnode, devicenode);
@@ -741,8 +749,10 @@ grub_util_devname_to_ofpath (const char *sys_devname)
ofpath = NULL;
}
- free (devnode);
free (devicenode);
+ devicenode_fail:
+ free (devnode);
+ devnode_fail:
free (name_buf);
return ofpath;
--
2.50.1 (Apple Git-155)
_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/grub-devel
next reply other threads:[~2025-11-19 10:00 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-11-19 9:59 Sudhakar Kuppusamy [this message]
-- strict thread matches above, loose matches on Subject: below --
2025-11-19 10:00 [PATCH v1] linux/ofpath: Add missing strdup failure checks Sudhakar Kuppusamy
[not found] <mailman.8407.1763554318.1058.grub-devel@gnu.org>
2025-11-19 13:48 ` Avnish Chouhan
2025-11-19 20:36 ` Daniel Kiper
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20251119095943.6428-1-sudhakar@linux.ibm.com \
--to=sudhakar@linux.ibm.com \
--cc=grub-devel@gnu.org \
--cc=sridharm@linux.ibm.com \
--cc=ssrish@linux.ibm.com \
--cc=stefanb@linux.ibm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.