From d31321835e9e0b2e1c792b8834840eb148cdd29f Mon Sep 17 00:00:00 2001 From: Andrei Borzenkov Date: Sat, 10 Oct 2015 10:02:20 +0300 Subject: [PATCH] file: ignore host disk in blocklist check It cannot work anyway because host disk cannot be read. This fixes hostfs access on native Windows build where filenames start with '\' or do not have initial separator at all (d:\foo). Issue was observed when running grub-fstest on Windows. On UNIX image name is canonicalized to always start with `/' so this was not noticed. This has side effect of allowing relative path names on host, but this already was the case with `ls' command, so it just extends it to all commands. Reported-By: Arch Stack Also-By: Arch Stack --- grub-core/kern/file.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/grub-core/kern/file.c b/grub-core/kern/file.c index 24da12bb9..3367485fb 100644 --- a/grub-core/kern/file.c +++ b/grub-core/kern/file.c @@ -89,7 +89,11 @@ grub_file_open (const char *name) file->device = device; - if (device->disk && file_name[0] != '/') + if (device->disk && file_name[0] != '/' +#if defined(GRUB_UTIL) || defined(GRUB_MACHINE_EMU) + && grub_strcmp (device->disk->name, "host") +#endif + ) /* This is a block list. */ file->fs = &grub_fs_blocklist; else