normal/charset: Fix underflow and overflow in loop init
In bidi_line_wrap(), "kk - 1" in the for loop init, "i = kk - 1", underflows when "kk" (unsigned int) is 0. Assigning the result of "kk - 1" to signed int "i" may cause overflow. To address both issues, cast "kk" to a signed type before subtraction to ensure safe arithmetic and assignment. Fixed: CID 473874 Signed-off-by: Lidong Chen <lidong.chen@oracle.com> Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com> Reviewed-by: Sudhakar Kuppusamy <sudhakar@linux.ibm.com>
This commit is contained in:
parent
ba8eadde6b
commit
8c2d4e64ff
@ -738,7 +738,7 @@ bidi_line_wrap (struct grub_unicode_glyph *visual_out,
|
||||
{
|
||||
int right_join = 0;
|
||||
signed i;
|
||||
for (i = kk - 1; i >= 0 && (unsigned) i + 1 > line_start;
|
||||
for (i = (signed) kk - 1; i >= 0 && (unsigned) i + 1 > line_start;
|
||||
i--)
|
||||
{
|
||||
enum grub_join_type join_type = get_join_type (visual[i].base);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user