grub-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH v2] Print module name on license check failure


From: Robbie Harwood
Subject: [PATCH v2] Print module name on license check failure
Date: Wed, 20 Oct 2021 11:19:13 -0400

Before performing the license check, resolve the module name so that it
can be printed if the license check fails.  Prior to this change, grub
would only indicate that the check had been failed, but not by what
module.  This made it difficult to track down either the problem module,
or debug the false positive further.

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 48f8a7907..90e83e4d4 100644
--- a/grub-core/kern/dl.c
+++ b/grub-core/kern/dl.c
@@ -457,14 +457,16 @@ grub_dl_find_section (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
@@ -641,8 +643,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)
-- 
2.33.0




reply via email to

[Prev in Thread] Current Thread [Next in Thread]