On Mon, Nov 17, 2025 at 06:06:22PM +0100, Daniel Kiper wrote:
> On Tue, Nov 11, 2025 at 02:49:20PM +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_ERR_BAD_NUMBER or
> > GRUB_ERR_OUT_OF_RANGE is encountered. This ensures that the error is
> > handled as false return and no grub_errno leakage.
> >
> > Signed-off-by: Michael Chang <[email protected]>
> > Reviewed-by: Sudhakar Kuppusamy <[email protected]>
> > Reviewed-by: Avnish Chouhan <[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..8a3446336 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_OUT_OF_RANGE)
> > +    {
> > +      grub_errno = GRUB_ERR_NONE;
> > +      return false;
> > +    }
> 
> I would unconditionally reset grub_errno to GRUB_ERR_NONE and be done.

OK. It makes sense to me.

Thanks,
Michael

> 
> >    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