From: Vladimir 'phcoder' Serbinenko Date: Fri, 1 Mar 2013 09:35:51 +0000 (+0100) Subject: * grub-core/kern/main.c (grub_set_prefix_and_root): Strip trailing X-Git-Tag: grub-2.02-beta1~1291 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=be174e5ef38a7b32860a32c2cbf2c4da99d3a825;p=thirdparty%2Fgrub.git * grub-core/kern/main.c (grub_set_prefix_and_root): Strip trailing platform from firmware path. --- diff --git a/ChangeLog b/ChangeLog index 135586c80..986871ce4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2013-03-01 Vladimir Serbinenko + + * grub-core/kern/main.c (grub_set_prefix_and_root): Strip trailing + platform from firmware path. + 2013-02-28 Vladimir Serbinenko Enable linux16 on non-BIOS systems for i.a. memtest. diff --git a/grub-core/kern/main.c b/grub-core/kern/main.c index 326244419..c43ac6b7f 100644 --- a/grub-core/kern/main.c +++ b/grub-core/kern/main.c @@ -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)