loader/i386/multiboot_mbi: Fix handling of errors in broken aout-kludge

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>
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
This commit is contained in:
Vladimir Serbinenko authored and Daniel Kiper committed 2024-06-20 14:46:23 +02:00
1 parent d35ff22516
commit 8abec8e153
1 file changed
+6 -3
+6 -3
View File
@@ -69,7 +69,6 @@ static grub_err_t
load_kernel (grub_file_t file, const char *filename, load_kernel (grub_file_t file, const char *filename,
char *buffer, struct multiboot_header *header) char *buffer, struct multiboot_header *header)
{ {
grub_err_t err;
mbi_load_data_t mld; mbi_load_data_t mld;
mld.file = file; 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) 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) { if (err == GRUB_ERR_NONE) {
return GRUB_ERR_NONE; return GRUB_ERR_NONE;
} }
if (err == GRUB_ERR_UNKNOWN_OS && (header->flags & MULTIBOOT_AOUT_KLUDGE)) 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) if (header->flags & MULTIBOOT_AOUT_KLUDGE)
{ {
@@ -97,6 +99,7 @@ load_kernel (grub_file_t file, const char *filename,
grub_size_t code_size; grub_size_t code_size;
void *source; void *source;
grub_relocator_chunk_t ch; grub_relocator_chunk_t ch;
grub_err_t err;
if (header->bss_end_addr) if (header->bss_end_addr)
code_size = (header->bss_end_addr - header->load_addr); code_size = (header->bss_end_addr - header->load_addr);