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>
{
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);