From 72b4c99376f7c6e6002dfbd7164194f346121871 Mon Sep 17 00:00:00 2001 From: Avnish Chouhan Date: Mon, 10 Nov 2025 20:27:22 +0530 Subject: [PATCH] osdep/linux/getroot: Add missing strdup() failure checks If strdup() fails, it returns NULL and passing NULL further down to the code can lead to segmentation fault or an undefined behavior. Signed-off-by: Avnish Chouhan Reviewed-by: Sudhakar Kuppusamy Reviewed-by: Daniel Kiper --- grub-core/osdep/linux/getroot.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/grub-core/osdep/linux/getroot.c b/grub-core/osdep/linux/getroot.c index 38fe110fe..d71c373c3 100644 --- a/grub-core/osdep/linux/getroot.c +++ b/grub-core/osdep/linux/getroot.c @@ -991,6 +991,8 @@ grub_util_get_raid_grub_dev (const char *os_dev) char *p, *q; p = strdup (os_dev + sizeof ("/dev/md_d") - 1); + if (p == NULL) + return NULL; q = strchr (p, 'p'); if (q) @@ -1006,6 +1008,8 @@ grub_util_get_raid_grub_dev (const char *os_dev) char *p, *q; p = strdup (os_dev + sizeof ("/dev/md/d") - 1); + if (p == NULL) + return NULL; q = strchr (p, 'p'); if (q) @@ -1019,6 +1023,8 @@ grub_util_get_raid_grub_dev (const char *os_dev) char *p , *q; p = strdup (os_dev + sizeof ("/dev/md") - 1); + if (p == NULL) + return NULL; q = strchr (p, 'p'); if (q) @@ -1032,6 +1038,8 @@ grub_util_get_raid_grub_dev (const char *os_dev) char *p , *q; p = strdup (os_dev + sizeof ("/dev/md/") - 1); + if (p == NULL) + return NULL; q = strchr (p, 'p'); if (q) @@ -1046,6 +1054,8 @@ grub_util_get_raid_grub_dev (const char *os_dev) char *p , *q; p = strdup (os_dev + sizeof ("/dev/md/") - 1); + if (p == NULL) + return NULL; q = strchr (p, 'p'); if (q)