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 == '>')
|
if (c == '<' || c == '>')
|
||||||
c = getchr();
|
c = getchr();
|
||||||
while (ascii_isdigit(c)) {
|
while (ascii_isdigit(c)) {
|
||||||
|
if (n > (INT_MAX - (c - '0')) / 10) {
|
||||||
|
EMSG(_("E951: \\% value too large"));
|
||||||
|
return FAIL;
|
||||||
|
}
|
||||||
n = n * 10 + (c - '0');
|
n = n * 10 + (c - '0');
|
||||||
c = getchr();
|
c = getchr();
|
||||||
}
|
}
|
||||||
|
@ -156,3 +156,12 @@ describe('matchaddpos()', function()
|
|||||||
]], {[1] = {foreground = Screen.colors.Red}, [2] = {bold = true, foreground = Screen.colors.Blue1}})
|
]], {[1] = {foreground = Screen.colors.Red}, [2] = {bold = true, foreground = Screen.colors.Blue1}})
|
||||||
end)
|
end)
|
||||||
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