normal/main: Unregister commands on module unload
When the normal module is loaded, the normal and normal_exit commands are registered but aren't unregistered when the module is unloaded. We need to add calls to grub_unregister_command() when unloading the module for these commands. Fixes: CVE-2025-61663 Fixes: CVE-2025-61664 Reported-by: Alec Brown <alec.r.brown@oracle.com> Signed-off-by: Alec Brown <alec.r.brown@oracle.com> Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
This commit is contained in:
parent
8ed78fd9f0
commit
05d3698b8b
@ -510,7 +510,7 @@ grub_mini_cmd_clear (struct grub_command *cmd __attribute__ ((unused)),
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static grub_command_t cmd_clear;
|
static grub_command_t cmd_clear, cmd_normal, cmd_normal_exit;
|
||||||
|
|
||||||
static void (*grub_xputs_saved) (const char *str);
|
static void (*grub_xputs_saved) (const char *str);
|
||||||
static const char *features[] = {
|
static const char *features[] = {
|
||||||
@ -554,10 +554,10 @@ GRUB_MOD_INIT(normal)
|
|||||||
grub_env_export ("pager");
|
grub_env_export ("pager");
|
||||||
|
|
||||||
/* Register a command "normal" for the rescue mode. */
|
/* Register a command "normal" for the rescue mode. */
|
||||||
grub_register_command ("normal", grub_cmd_normal,
|
cmd_normal = grub_register_command ("normal", grub_cmd_normal,
|
||||||
0, N_("Enter normal mode."));
|
0, N_("Enter normal mode."));
|
||||||
grub_register_command ("normal_exit", grub_cmd_normal_exit,
|
cmd_normal_exit = grub_register_command ("normal_exit", grub_cmd_normal_exit,
|
||||||
0, N_("Exit from normal mode."));
|
0, N_("Exit from normal mode."));
|
||||||
|
|
||||||
/* Reload terminal colors when these variables are written to. */
|
/* Reload terminal colors when these variables are written to. */
|
||||||
grub_register_variable_hook ("color_normal", NULL, grub_env_write_color_normal);
|
grub_register_variable_hook ("color_normal", NULL, grub_env_write_color_normal);
|
||||||
@ -599,4 +599,6 @@ GRUB_MOD_FINI(normal)
|
|||||||
grub_register_variable_hook ("color_highlight", NULL, NULL);
|
grub_register_variable_hook ("color_highlight", NULL, NULL);
|
||||||
grub_fs_autoload_hook = 0;
|
grub_fs_autoload_hook = 0;
|
||||||
grub_unregister_command (cmd_clear);
|
grub_unregister_command (cmd_clear);
|
||||||
|
grub_unregister_command (cmd_normal);
|
||||||
|
grub_unregister_command (cmd_normal_exit);
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user