Re: [PATCH v2] ieee1275 : Add a check for invalid partition number
Avnish Chouhan <[email protected]> Fri, 02 Jan 2026 19:20:06 +0530
| Newsgroups | org.gnu.grub-devel |
|---|---|
| Message-ID | <[email protected]> |
On 2025-12-20 19:04, Daniel Kiper wrote: > On Tue, Dec 02, 2025 at 06:29:44PM +0530, Avnish Chouhan wrote: >> Adding a check for invalid partition number. grub_strtoul() can fail >> in several scenarios like invalid input, overflow, etc will result in >> an invalid partition number which could lead to an undefined behavior. >> >> Signed-off-by: Avnish Chouhan <[email protected]> >> --- >> grub-core/kern/ieee1275/openfw.c | 13 ++++++++++++- >> 1 file changed, 12 insertions(+), 1 deletion(-) >> >> diff --git a/grub-core/kern/ieee1275/openfw.c >> b/grub-core/kern/ieee1275/openfw.c >> index 3b492dd..e82dc34 100644 >> --- a/grub-core/kern/ieee1275/openfw.c >> +++ b/grub-core/kern/ieee1275/openfw.c >> @@ -512,7 +512,18 @@ grub_ieee1275_encode_devname (const char *path) >> } >> if (partition && partition[0]) >> { >> - unsigned int partno = grub_strtoul (partition, 0, 0); >> + char *endptr; >> + grub_errno = GRUB_ERR_NONE; > > You should do this reset after grub_strtoul() call. The commit > 533cd4d68 > (blsuki: Fix grub_errno leakage in blsuki_is_default_entry()) explains > why. > Hi Daniel, Thank you so much for reviewing the patch! This I have added so that we'll not catch any earlier errors. I will reset grub_errno after we verify the grub_strtoul as you suggested. >> + unsigned int partno = grub_strtoul (partition, &endptr, 0); > > Do not cast result immediately to shorter type. You are not able to > detect overflow then. First assign result to type size equal to type > returned by the grub_strtoul() function and then check for overflows > properly. > Sure. I'll use unsigned long! >> + if (grub_errno != GRUB_ERR_NONE || *endptr != '\0') > > This check is not reliable. Please take a look at the commit ac8a37dda > (net/http: Allow use of non-standard TCP/IP ports). It shows how it > should be done correctly. Even it is reverted now. > This I have added based on the Alec's suggestion in v1, same as you suggested. I have used the same check as in the commit ac8a37dda, just skipping the range check due to use of "grub_errno != GRUB_ERR_NONE" condition. Would you like me to add range check here? > By the way, it would be nice if you could verify correctness of > strtoul()/grub_strtoul()/... calls/checks in the GRUB code after > the release. Sure Daniel, I will surly do! Thank you! Regards, Avnish Chouhan > > Daniel _______________________________________________ Grub-devel mailing list [email protected] https://lists.gnu.org/mailman/listinfo/grub-devel