mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
Checks for overflow when parsing string to int
This commit is contained in:
parent
43f4e5d5be
commit
33ce6a7f62
@ -1499,6 +1499,10 @@ static int nfa_regatom(void)
|
||||
if (c == '<' || c == '>')
|
||||
c = getchr();
|
||||
while (ascii_isdigit(c)) {
|
||||
if (n > (INT_MAX - (c - '0')) / 10) {
|
||||
EMSG(_("E951: \\% value too large"));
|
||||
return FAIL;
|
||||
}
|
||||
n = n * 10 + (c - '0');
|
||||
c = getchr();
|
||||
}
|
||||
|
@ -156,3 +156,12 @@ describe('matchaddpos()', function()
|
||||
]], {[1] = {foreground = Screen.colors.Red}, [2] = {bold = true, foreground = Screen.colors.Blue1}})
|
||||
end)
|
||||
end)
|
||||
|
||||
describe('nfa_regatom() column search', function()
|
||||
it('fails when column value is greater than a 64-bit integer value', function()
|
||||
expect_err("Vim:E951: \\%% value too large", command, "/\\v%18446744071562067968c")
|
||||
end)
|
||||
it('fails when column value is greater than a 32-bit integer value', function()
|
||||
expect_err("Vim:E951: \\%% value too large", command, "/\\v%2147483648c")
|
||||
end)
|
||||
end)
|
||||
|
Loading…
Reference in New Issue
Block a user