Ventoy/GRUB2/MOD_SRC/grub-2.04
Celine Lee 9789069c0d
Modify casting in protection against underflow (#1514)
Dear Ventoy community –
 
Our team is working with your code and we noticed this if logical expression:
 
                if (len - 1 - (int)(long)(pos - pwdstr) != 32)
 
We studied the surrounding code. We believe we understand the intention of the type casts in the above if statement. It seems they were meant to ensure an underflow doesn’t occur by the subtraction between to char pointers, which is a great catch (!). However, we believe the way the type casts are structured, the code is not actually protecting against such underflow because pwdstr isn’t cast into a signed long until after the subtraction occurs. To properly protect this code against underflow, we believe it should be changed to something like the following:

if (len - 1 - ((long)pos – (long)pwdstr) != 32)

Or, to enhance readability for junior engineers who may not know that the “long” type cast is implicitly of a signed integer type, we could include the `signed` keyword for added verbosity:
 
if (len - 1 - ((signed long)pos – (signed long)pwdstr) != 32)
 
Thank you!
2022-03-26 10:29:18 +08:00
..
grub-core Modify casting in protection against underflow (#1514) 2022-03-26 10:29:18 +08:00
include/grub 1.0.67 release 2022-02-14 23:31:54 +08:00
util Fix pack error in vDisk env (#912) 2021-05-21 10:06:16 +08:00
configure.ac experimental support for loongson mips64el uefi 2021-03-05 23:03:34 +08:00
gentpl.py experimental support for loongson mips64el uefi 2021-03-05 23:03:34 +08:00
install.sh misc update 2021-08-18 23:00:11 +08:00