]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
osdep/linux/getroot: Add missing strdup() failure checks
authorAvnish Chouhan <avnish@linux.ibm.com>
Mon, 10 Nov 2025 14:57:22 +0000 (20:27 +0530)
committerDaniel Kiper <daniel.kiper@oracle.com>
Tue, 18 Nov 2025 11:49:31 +0000 (12:49 +0100)
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 <avnish@linux.ibm.com>
Reviewed-by: Sudhakar Kuppusamy <sudhakar@linux.ibm.com>
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
grub-core/osdep/linux/getroot.c

index 38fe110fe78827ea9f4ae89b6a9cf175125198c2..d71c373c35b1420a6c22b96ceccd2f55baa4747b 100644 (file)
@@ -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)