summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorChristian Brabandt <cb@256bit.org>2023-11-19 10:45:24 +0100
committerChristian Brabandt <cb@256bit.org>2023-11-19 10:45:24 +0100
commit22a97fc241361aa91bda84e5344d5b7c0cda3e81 (patch)
tree8527cf81a9ea533ea156237e6c2293108226f8af /src
parentab4f27e2a8ae72970e24b83a6828ed4d2c6f112f (diff)
patch 9.0.2113: Coverity warns for another overflow in shift_line()v9.0.2113
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>
Diffstat (limited to 'src')
-rw-r--r--src/ops.c14
-rw-r--r--src/version.c2
2 files changed, 8 insertions, 8 deletions
diff --git a/src/ops.c b/src/ops.c
index ecd7fc2170..9e8ea86160 100644
--- a/src/ops.c
+++ b/src/ops.c
@@ -249,25 +249,23 @@ shift_line(
}
else
i += amount;
- count = i * sw_val;
+ count = (long long)i * (long long)sw_val;
}
else // original vi indent
{
if (left)
{
- count -= sw_val * amount;
+ count -= (long long)sw_val * (long long)amount;
if (count < 0)
count = 0;
}
else
- {
- if ((long long)sw_val * (long long)amount > INT_MAX - count)
- count = INT_MAX;
- 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
if (State & VREPLACE_FLAG)
change_indent(INDENT_SET, (int)count, FALSE, NUL, call_changed_bytes);
diff --git a/src/version.c b/src/version.c
index 249cd11d20..00b532075c 100644
--- a/src/version.c
+++ b/src/version.c
@@ -705,6 +705,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 2113,
+/**/
2112,
/**/
2111,