You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
48 lines
1.9 KiB
48 lines
1.9 KiB
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 |
|
From: Robbie Harwood <rharwood@redhat.com> |
|
Date: Tue, 12 Oct 2021 12:34:23 -0400 |
|
Subject: [PATCH] Print module name on license check failure |
|
|
|
At the very least, this will make it easier to track down the problem |
|
module - or, if something else has gone wrong, provide more information |
|
for debugging. |
|
|
|
Signed-off-by: Robbie Harwood <rharwood@redhat.com> |
|
--- |
|
grub-core/kern/dl.c | 10 ++++++---- |
|
1 file changed, 6 insertions(+), 4 deletions(-) |
|
|
|
diff --git a/grub-core/kern/dl.c b/grub-core/kern/dl.c |
|
index 9557254035e..f3044945742 100644 |
|
--- a/grub-core/kern/dl.c |
|
+++ b/grub-core/kern/dl.c |
|
@@ -528,14 +528,16 @@ grub_dl_find_section_index (Elf_Ehdr *e, const char *name) |
|
Be sure to understand your license obligations. |
|
*/ |
|
static grub_err_t |
|
-grub_dl_check_license (Elf_Ehdr *e) |
|
+grub_dl_check_license (grub_dl_t mod, Elf_Ehdr *e) |
|
{ |
|
Elf_Shdr *s = grub_dl_find_section (e, ".module_license"); |
|
if (s && (grub_strcmp ((char *) e + s->sh_offset, "LICENSE=GPLv3") == 0 |
|
|| grub_strcmp ((char *) e + s->sh_offset, "LICENSE=GPLv3+") == 0 |
|
|| grub_strcmp ((char *) e + s->sh_offset, "LICENSE=GPLv2+") == 0)) |
|
return GRUB_ERR_NONE; |
|
- return grub_error (GRUB_ERR_BAD_MODULE, "incompatible license"); |
|
+ return grub_error (GRUB_ERR_BAD_MODULE, |
|
+ "incompatible license in module %s: %s", mod->name, |
|
+ (char *) e + s->sh_offset); |
|
} |
|
|
|
static grub_err_t |
|
@@ -743,8 +745,8 @@ grub_dl_load_core_noinit (void *addr, grub_size_t size) |
|
constitutes linking) and GRUB core being licensed under GPLv3+. |
|
Be sure to understand your license obligations. |
|
*/ |
|
- if (grub_dl_check_license (e) |
|
- || grub_dl_resolve_name (mod, e) |
|
+ if (grub_dl_resolve_name (mod, e) |
|
+ || grub_dl_check_license (mod, e) |
|
|| grub_dl_resolve_dependencies (mod, e) |
|
|| grub_dl_load_segments (mod, e) |
|
|| grub_dl_resolve_symbols (mod, e)
|
|
|