File 0001-blsuki-Fix-grub_errno-leakage-in-blsuki_is_default_e.patch of Package grub2
From d0246ea957d35b726cded7508d40e80319492da6 Mon Sep 17 00:00:00 2001
From: Michael Chang <mchang@suse.com>
Date: Fri, 7 Nov 2025 16:26:45 +0800
Subject: [PATCH] blsuki: Fix grub_errno leakage in blsuki_is_default_entry()
The grub_strtol() call in blsuki_is_default_entry() can set grub_errno
to GRUB_ERR_BAD_NUMBER if the input string does not contain any valid
digits (i.e., it cannot be converted to an index).
This errno value is currently left uncleared, which can lead to
unexpected behavior in subsequent logic that tests the result of a
function by checking grub_errno.
Clear grub_errno and return false when GRUB_ERR_BAD_NUMBER is set, as
this specific error should be ignored in this context.
Signed-off-by: Michael Chang <mchang@suse.com>
---
grub-core/commands/blsuki.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/grub-core/commands/blsuki.c b/grub-core/commands/blsuki.c
index 21d767f05..df25b6fbc 100644
--- a/grub-core/commands/blsuki.c
+++ b/grub-core/commands/blsuki.c
@@ -1510,6 +1510,12 @@ blsuki_is_default_entry (const char *def_entry, grub_blsuki_entry_t *entry, int
return true;
def_idx = grub_strtol (def_entry, &def_entry_end, 0);
+ if (grub_errno == GRUB_ERR_BAD_NUMBER)
+ {
+ grub_errno = GRUB_ERR_NONE;
+ return false;
+ }
+
if (*def_entry_end != '\0' || def_idx < 0 || def_idx > GRUB_INT_MAX)
return false;
--
2.51.1