Language: C
Label: safe
CWE: CWE-190 \u2014 Integer Overflow or Wraparound
The product performs a calculation that can produce an integer overflow or wraparound, when the logic assumes that the resulting value will always be larger than the original value. This can introduce other weaknesses when the calculation is used for resource management or execution control.

Code:
shift_line(
    int	left,
    int	round,
    int	amount,
    int call_changed_bytes)	// call changed_bytes()
{
    long long	count;
    int		i, j;
    int		sw_val = (int)get_sw_value_indent(curbuf);

    count = (long long)get_indent();	// get current indent

    if (round)			// round off indent
    {
	i = count / sw_val;	// number of 'shiftwidth' rounded down
	j = count % sw_val;	// extra spaces
	if (j && left)		// first remove extra spaces
	    --amount;
	if (left)
	{
	    i -= amount;
	    if (i < 0)
		i = 0;
	}
	else
	    i += amount;
	count = i * sw_val;
    }
    else		// original vi indent
    {
	if (left)
	{
	    count -= sw_val * 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;
	}
    }

    // Set new indent
    if (State & VREPLACE_FLAG)
	change_indent(INDENT_SET, (int)count, FALSE, NUL, call_changed_bytes);
    else
	(void)set_indent((int)count, call_changed_bytes ? SIN_CHANGED : 0);
}