[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH vRESEND] MULTIBOOT: Fix handling of errors in broken aout-kludge
From: |
Vladimir Serbinenko |
Subject: |
[PATCH vRESEND] MULTIBOOT: Fix handling of errors in broken aout-kludge |
Date: |
Fri, 17 May 2024 10:53:27 +0300 |
Current code in some codepaths neither discards nor reports
errors. Properly surface the error
While on it split 2 cases of unrelated variables both named err.
Signed-off-by: Vladimir Serbinenko <phcoder@gmail.com>
---
grub-core/loader/i386/multiboot_mbi.c | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/grub-core/loader/i386/multiboot_mbi.c
b/grub-core/loader/i386/multiboot_mbi.c
index fae5d6fb8..bdaf67ad0 100644
--- a/grub-core/loader/i386/multiboot_mbi.c
+++ b/grub-core/loader/i386/multiboot_mbi.c
@@ -69,7 +69,6 @@ static grub_err_t
load_kernel (grub_file_t file, const char *filename,
char *buffer, struct multiboot_header *header)
{
- grub_err_t err;
mbi_load_data_t mld;
mld.file = file;
@@ -81,12 +80,15 @@ load_kernel (grub_file_t file, const char *filename,
if (grub_multiboot_quirks & GRUB_MULTIBOOT_QUIRK_BAD_KLUDGE)
{
- err = grub_multiboot_load_elf (&mld);
+ grub_err_t err = grub_multiboot_load_elf (&mld);
+
if (err == GRUB_ERR_NONE) {
return GRUB_ERR_NONE;
}
if (err == GRUB_ERR_UNKNOWN_OS && (header->flags &
MULTIBOOT_AOUT_KLUDGE))
- grub_errno = GRUB_ERR_NONE;
+ grub_errno = err = GRUB_ERR_NONE;
+ if (err != GRUB_ERR_NONE)
+ return err;
}
if (header->flags & MULTIBOOT_AOUT_KLUDGE)
{
@@ -97,6 +99,7 @@ load_kernel (grub_file_t file, const char *filename,
grub_size_t code_size;
void *source;
grub_relocator_chunk_t ch;
+ grub_err_t err;
if (header->bss_end_addr)
code_size = (header->bss_end_addr - header->load_addr);
--
2.39.2
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [PATCH vRESEND] MULTIBOOT: Fix handling of errors in broken aout-kludge,
Vladimir Serbinenko <=