On Tue, Nov 18, 2025 at 04:04:48PM +0800, Michael Chang via Grub-devel wrote:
> The grub_strtol() call in blsuki_is_default_entry() can set grub_errno
> to either GRUB_ERR_BAD_NUMBER or GRUB_ERR_OUT_OF_RANGE if the input
> string is invalid or out of range.
>
> This errno value is currently left uncleared, which can lead to
> unexpected behavior in subsequent functions that rely on checking
> current state of grub_errno.
>
> Clear grub_errno and return false when grub_strtol() reports error. This
> ensures that the error is handled and no grub_errno leakage.
>
> Signed-off-by: Michael Chang <[email protected]>
> Reviewed-by: Sudhakar Kuppusamy <[email protected]>
> Reviewed-by: Avnish Chouhan <[email protected]>
> Reviewed-by: Alec Brown <[email protected]>
> ---
>  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..9abb39a74 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_NONE)

This "if" is not really need. Please drop it. Everything will be caught
by the "if" below.

> +    {
> +      grub_errno = GRUB_ERR_NONE;
> +      return false;
> +    }
> +
>    if (*def_entry_end != '\0' || def_idx < 0 || def_idx > GRUB_INT_MAX)
>      return false;

Daniel

_______________________________________________
Grub-devel mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/grub-devel

Reply via email to