]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
* grub-core/kern/main.c (grub_set_prefix_and_root): Strip trailing
authorVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Fri, 1 Mar 2013 09:35:51 +0000 (10:35 +0100)
committerVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Fri, 1 Mar 2013 09:35:51 +0000 (10:35 +0100)
platform from firmware path.

ChangeLog
grub-core/kern/main.c

index 135586c8072e98cd2656897ceb6727a3a7a88dd9..986871ce4eaa7e893907322c41cfdf50cc3f4544 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2013-03-01  Vladimir Serbinenko  <phcoder@gmail.com>
+
+       * grub-core/kern/main.c (grub_set_prefix_and_root): Strip trailing
+       platform from firmware path.
+
 2013-02-28  Vladimir Serbinenko  <phcoder@gmail.com>
 
        Enable linux16 on non-BIOS systems for i.a. memtest.
index 326244419eb6c47fa85266c4d74ea48578a90f63..c43ac6b7f29dda348c4e7d6b7f9f281e1893e315 100644 (file)
@@ -168,7 +168,16 @@ grub_set_prefix_and_root (void)
   else
     grub_free (fwdevice);
   if (fwpath && !path)
-    path = fwpath;
+    {
+      grub_size_t len = grub_strlen (fwpath);
+      while (len > 1 && fwpath[len - 1] == '/')
+       fwpath[--len] = 0;
+      if (len >= sizeof (GRUB_TARGET_CPU "-" GRUB_PLATFORM) - 1
+         && grub_memcmp (fwpath + len - (sizeof (GRUB_TARGET_CPU "-" GRUB_PLATFORM) - 1), GRUB_TARGET_CPU "-" GRUB_PLATFORM,
+                         sizeof (GRUB_TARGET_CPU "-" GRUB_PLATFORM) - 1) == 0)
+       fwpath[len - (sizeof (GRUB_TARGET_CPU "-" GRUB_PLATFORM) - 1)] = 0;
+      path = fwpath;
+    }
   else
     grub_free (fwpath);
   if (device)