0
0
mirror of https://github.com/vim/vim.git synced 2025-07-26 11:04:33 -04:00

patch 9.0.2113: Coverity warns for another overflow in shift_line()

Problem:  Coverity warns for another overflow in shift_line()
Solution: Test for INT_MAX after the if condition, cast integer values
          to (long long) before multiplying.

Signed-off-by: Christian Brabandt <cb@256bit.org>
Signed-off-by: Michael Henry <vim@drmikehenry.com>
Signed-off-by: Ernie Rael <errael@raelity.com>
This commit is contained in:
Christian Brabandt 2023-11-19 10:45:24 +01:00
parent ab4f27e2a8
commit 22a97fc241
No known key found for this signature in database
GPG Key ID: F3F92DA383FDDE09
2 changed files with 8 additions and 8 deletions

View File

@ -249,24 +249,22 @@ shift_line(
} }
else else
i += amount; i += amount;
count = i * sw_val; count = (long long)i * (long long)sw_val;
} }
else // original vi indent else // original vi indent
{ {
if (left) if (left)
{ {
count -= sw_val * amount; count -= (long long)sw_val * (long long)amount;
if (count < 0) if (count < 0)
count = 0; count = 0;
} }
else
{
if ((long long)sw_val * (long long)amount > INT_MAX - count)
count = INT_MAX;
else else
count += (long long)sw_val * (long long)amount; count += (long long)sw_val * (long long)amount;
} }
}
if (count > INT_MAX)
count = INT_MAX;
// Set new indent // Set new indent
if (State & VREPLACE_FLAG) if (State & VREPLACE_FLAG)

View File

@ -704,6 +704,8 @@ static char *(features[]) =
static int included_patches[] = static int included_patches[] =
{ /* Add new patch number below this line */ { /* Add new patch number below this line */
/**/
2113,
/**/ /**/
2112, 2112,
/**/ /**/