]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
kern/file: Fix error handling in grub_file_open()
authorSteve McIntyre <steve@einval.com>
Tue, 6 Dec 2022 01:45:11 +0000 (01:45 +0000)
committerDaniel Kiper <daniel.kiper@oracle.com>
Wed, 7 Dec 2022 22:38:26 +0000 (23:38 +0100)
grub_file_open() calls grub_file_get_device_name(), but doesn't check
the return. Instead, it checks if grub_errno is set.

However, nothing initialises grub_errno here when grub_file_open()
starts. This means that trying to open one file that doesn't exist and
then trying to open another file that does will (incorrectly) also
fail to open that second file.

Let's fix that.

Signed-off-by: Steve McIntyre <steve@einval.com>
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
grub-core/kern/file.c

index 8d48fd50dc6bea5640d681bc08c4c1869bd71172..750177248f9d3b2e7a07836686b49b38bb4417b7 100644 (file)
@@ -66,6 +66,9 @@ grub_file_open (const char *name, enum grub_file_type type)
   const char *file_name;
   grub_file_filter_id_t filter;
 
+  /* Reset grub_errno before we start. */
+  grub_errno = GRUB_ERR_NONE;
+
   device_name = grub_file_get_device_name (name);
   if (grub_errno)
     goto fail;