mirror of
https://github.com/neovim/neovim.git
synced 2024-12-25 13:45:15 -07:00
5531c95101
Problem: Computation overflow with large cound for :yank.
Solution: Avoid an overflow.
3cf21b3051
Co-authored-by: Bram Moolenaar <Bram@vim.org>
66 lines
2.1 KiB
Lua
66 lines
2.1 KiB
Lua
local t = require('test.testutil')
|
|
local n = require('test.functional.testnvim')()
|
|
|
|
local command = n.command
|
|
local eq = t.eq
|
|
local clear = n.clear
|
|
local fn = n.fn
|
|
local pcall_err = t.pcall_err
|
|
local assert_alive = n.assert_alive
|
|
|
|
describe('Ex cmds', function()
|
|
before_each(function()
|
|
clear()
|
|
end)
|
|
|
|
local function check_excmd_err(cmd, err)
|
|
eq(err .. ': ' .. cmd, pcall_err(command, cmd))
|
|
end
|
|
|
|
it('handle integer overflow from user-input #5555', function()
|
|
command(':9999999999999999999999999999999999999999')
|
|
command(':later 9999999999999999999999999999999999999999')
|
|
command(':echo expand("#<9999999999999999999999999999999999999999")')
|
|
command(':lockvar 9999999999999999999999999999999999999999')
|
|
command(
|
|
':winsize 9999999999999999999999999999999999999999 9999999999999999999999999999999999999999'
|
|
)
|
|
check_excmd_err(
|
|
':tabnext 9999999999999999999999999999999999999999',
|
|
'Vim(tabnext):E475: Invalid argument: 9999999999999999999999999999999999999999'
|
|
)
|
|
eq(
|
|
'Vim(Next):E163: There is only one file to edit',
|
|
pcall_err(command, ':N 9999999999999999999999999999999999999999')
|
|
)
|
|
check_excmd_err(
|
|
':bdelete 9999999999999999999999999999999999999999',
|
|
'Vim(bdelete):E516: No buffers were deleted'
|
|
)
|
|
eq(
|
|
'Vim(menu):E329: No menu "9999999999999999999999999999999999999999"',
|
|
pcall_err(command, ':menu 9999999999999999999999999999999999999999')
|
|
)
|
|
assert_alive()
|
|
end)
|
|
|
|
it('listing long user command does not crash', function()
|
|
command('execute "command" repeat("T", 255) ":"')
|
|
command('command')
|
|
end)
|
|
|
|
it(':def is an unknown command #23149', function()
|
|
eq('Vim:E492: Not an editor command: def', pcall_err(command, 'def'))
|
|
eq(1, fn.exists(':d'))
|
|
eq('delete', fn.fullcommand('d'))
|
|
eq(1, fn.exists(':de'))
|
|
eq('delete', fn.fullcommand('de'))
|
|
eq(0, fn.exists(':def'))
|
|
eq('', fn.fullcommand('def'))
|
|
eq(1, fn.exists(':defe'))
|
|
eq('defer', fn.fullcommand('defe'))
|
|
eq(2, fn.exists(':defer'))
|
|
eq('defer', fn.fullcommand('defer'))
|
|
end)
|
|
end)
|