Mercurial > vim
annotate src/testdir/test_compiler.vim @ 33776:9503dc55b5ed v9.0.2108
patch 9.0.2108: [security]: overflow with count for :s command
Commit: https://github.com/vim/vim/commit/ac63787734fda2e294e477af52b3bd601517fa78
Author: Christian Brabandt <cb@256bit.org>
Date: Tue Nov 14 20:45:48 2023 +0100
patch 9.0.2108: [security]: overflow with count for :s command
Problem: [security]: overflow with count for :s command
Solution: Abort the :s command if the count is too large
If the count after the :s command is larger than what fits into a
(signed) long variable, abort with e_value_too_large.
Adds a test with INT_MAX as count and verify it correctly fails.
It seems the return value on Windows using mingw compiler wraps around,
so the initial test using :s/./b/9999999999999999999999999990 doesn't
fail there, since the count is wrapping around several times and finally
is no longer larger than 2147483647. So let's just use 2147483647 in the
test, which hopefully will always cause a failure
Signed-off-by: Christian Brabandt <cb@256bit.org>
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Thu, 16 Nov 2023 22:15:10 +0100 |
parents | fed9c5ffde42 |
children | 7ed07817c287 |
rev | line source |
---|---|
13970
939cfab265b9
patch 8.1.0003: the :compiler command is not tested
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
1 " Test the :compiler command |
939cfab265b9
patch 8.1.0003: the :compiler command is not tested
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
2 |
18767
068337e86133
patch 8.1.2373: cannot build with +popupwin but without +quickfix
Bram Moolenaar <Bram@vim.org>
parents:
18273
diff
changeset
|
3 source check.vim |
19348
b6da81589f8c
patch 8.2.0232: the :compiler command causes a crash
Bram Moolenaar <Bram@vim.org>
parents:
19289
diff
changeset
|
4 source shared.vim |
18767
068337e86133
patch 8.1.2373: cannot build with +popupwin but without +quickfix
Bram Moolenaar <Bram@vim.org>
parents:
18273
diff
changeset
|
5 |
13970
939cfab265b9
patch 8.1.0003: the :compiler command is not tested
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
6 func Test_compiler() |
23027
f74978697fb6
patch 8.2.2060: check for features implemented with "if"
Bram Moolenaar <Bram@vim.org>
parents:
22983
diff
changeset
|
7 CheckExecutable perl |
18767
068337e86133
patch 8.1.2373: cannot build with +popupwin but without +quickfix
Bram Moolenaar <Bram@vim.org>
parents:
18273
diff
changeset
|
8 CheckFeature quickfix |
13970
939cfab265b9
patch 8.1.0003: the :compiler command is not tested
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
9 |
33333
fed9c5ffde42
patch 9.0.1931: make test_compilers fails on ubuntu
Christian Brabandt <cb@256bit.org>
parents:
26109
diff
changeset
|
10 let save_LC_ALL = $LC_ALL |
fed9c5ffde42
patch 9.0.1931: make test_compilers fails on ubuntu
Christian Brabandt <cb@256bit.org>
parents:
26109
diff
changeset
|
11 let $LC_ALL= "C" |
14260
9ff35e144467
patch 8.1.0146: when $LANG is set the compiler test may fail
Christian Brabandt <cb@256bit.org>
parents:
13974
diff
changeset
|
12 |
17572
0d7c87cad133
patch 8.1.1783: MS-Windows: compiler test may fail when using %:S
Bram Moolenaar <Bram@vim.org>
parents:
14260
diff
changeset
|
13 " %:S does not work properly with 'shellslash' set |
0d7c87cad133
patch 8.1.1783: MS-Windows: compiler test may fail when using %:S
Bram Moolenaar <Bram@vim.org>
parents:
14260
diff
changeset
|
14 let save_shellslash = &shellslash |
0d7c87cad133
patch 8.1.1783: MS-Windows: compiler test may fail when using %:S
Bram Moolenaar <Bram@vim.org>
parents:
14260
diff
changeset
|
15 set noshellslash |
0d7c87cad133
patch 8.1.1783: MS-Windows: compiler test may fail when using %:S
Bram Moolenaar <Bram@vim.org>
parents:
14260
diff
changeset
|
16 |
13970
939cfab265b9
patch 8.1.0003: the :compiler command is not tested
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
17 e Xfoo.pl |
939cfab265b9
patch 8.1.0003: the :compiler command is not tested
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
18 compiler perl |
939cfab265b9
patch 8.1.0003: the :compiler command is not tested
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
19 call assert_equal('perl', b:current_compiler) |
939cfab265b9
patch 8.1.0003: the :compiler command is not tested
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
20 call assert_fails('let g:current_compiler', 'E121:') |
939cfab265b9
patch 8.1.0003: the :compiler command is not tested
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
21 |
26103
d079ab2ba260
patch 8.2.3584: "verbose set efm" reports location of the :compiler command
Bram Moolenaar <Bram@vim.org>
parents:
24323
diff
changeset
|
22 let verbose_efm = execute('verbose set efm') |
26109
efc174960b10
patch 8.2.3587: compiler test fails with backslash file separator
Bram Moolenaar <Bram@vim.org>
parents:
26103
diff
changeset
|
23 call assert_match('Last set from .*[/\\]compiler[/\\]perl.vim ', verbose_efm) |
26103
d079ab2ba260
patch 8.2.3584: "verbose set efm" reports location of the :compiler command
Bram Moolenaar <Bram@vim.org>
parents:
24323
diff
changeset
|
24 |
13970
939cfab265b9
patch 8.1.0003: the :compiler command is not tested
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
25 call setline(1, ['#!/usr/bin/perl -w', 'use strict;', 'my $foo=1']) |
939cfab265b9
patch 8.1.0003: the :compiler command is not tested
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
26 w! |
939cfab265b9
patch 8.1.0003: the :compiler command is not tested
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
27 call feedkeys(":make\<CR>\<CR>", 'tx') |
939cfab265b9
patch 8.1.0003: the :compiler command is not tested
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
28 call assert_fails('clist', 'E42:') |
939cfab265b9
patch 8.1.0003: the :compiler command is not tested
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
29 |
939cfab265b9
patch 8.1.0003: the :compiler command is not tested
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
30 call setline(1, ['#!/usr/bin/perl -w', 'use strict;', '$foo=1']) |
939cfab265b9
patch 8.1.0003: the :compiler command is not tested
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
31 w! |
939cfab265b9
patch 8.1.0003: the :compiler command is not tested
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
32 call feedkeys(":make\<CR>\<CR>", 'tx') |
939cfab265b9
patch 8.1.0003: the :compiler command is not tested
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
33 let a=execute('clist') |
18118
9b7c7754ba9d
patch 8.1.2054: compiler test for Perl may fail
Bram Moolenaar <Bram@vim.org>
parents:
17572
diff
changeset
|
34 call assert_match('\n \d\+ Xfoo.pl:3: Global symbol "$foo" ' |
9b7c7754ba9d
patch 8.1.2054: compiler test for Perl may fail
Bram Moolenaar <Bram@vim.org>
parents:
17572
diff
changeset
|
35 \ . 'requires explicit package name', a) |
9b7c7754ba9d
patch 8.1.2054: compiler test for Perl may fail
Bram Moolenaar <Bram@vim.org>
parents:
17572
diff
changeset
|
36 |
13970
939cfab265b9
patch 8.1.0003: the :compiler command is not tested
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
37 |
17572
0d7c87cad133
patch 8.1.1783: MS-Windows: compiler test may fail when using %:S
Bram Moolenaar <Bram@vim.org>
parents:
14260
diff
changeset
|
38 let &shellslash = save_shellslash |
13970
939cfab265b9
patch 8.1.0003: the :compiler command is not tested
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
39 call delete('Xfoo.pl') |
939cfab265b9
patch 8.1.0003: the :compiler command is not tested
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
40 bw! |
33333
fed9c5ffde42
patch 9.0.1931: make test_compilers fails on ubuntu
Christian Brabandt <cb@256bit.org>
parents:
26109
diff
changeset
|
41 let $LC_ALL = save_LC_ALL |
13970
939cfab265b9
patch 8.1.0003: the :compiler command is not tested
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
42 endfunc |
939cfab265b9
patch 8.1.0003: the :compiler command is not tested
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
43 |
22981
72e0ec552189
patch 8.2.2037: compiler test depends on list of compiler plugins
Bram Moolenaar <Bram@vim.org>
parents:
21765
diff
changeset
|
44 func GetCompilerNames() |
72e0ec552189
patch 8.2.2037: compiler test depends on list of compiler plugins
Bram Moolenaar <Bram@vim.org>
parents:
21765
diff
changeset
|
45 return glob('$VIMRUNTIME/compiler/*.vim', 0, 1) |
22983
1e1422df34e3
patch 8.2.2038: compiler test fails on MS-Windows
Bram Moolenaar <Bram@vim.org>
parents:
22981
diff
changeset
|
46 \ ->map({i, v -> substitute(v, '.*[\\/]\([a-zA-Z0-9_\-]*\).vim', '\1', '')}) |
1e1422df34e3
patch 8.2.2038: compiler test fails on MS-Windows
Bram Moolenaar <Bram@vim.org>
parents:
22981
diff
changeset
|
47 \ ->sort() |
22981
72e0ec552189
patch 8.2.2037: compiler test depends on list of compiler plugins
Bram Moolenaar <Bram@vim.org>
parents:
21765
diff
changeset
|
48 endfunc |
72e0ec552189
patch 8.2.2037: compiler test depends on list of compiler plugins
Bram Moolenaar <Bram@vim.org>
parents:
21765
diff
changeset
|
49 |
13970
939cfab265b9
patch 8.1.0003: the :compiler command is not tested
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
50 func Test_compiler_without_arg() |
18273
fc68850c5233
patch 8.1.2131: MSVC tests fail
Bram Moolenaar <Bram@vim.org>
parents:
18269
diff
changeset
|
51 let runtime = substitute($VIMRUNTIME, '\\', '/', 'g') |
fc68850c5233
patch 8.1.2131: MSVC tests fail
Bram Moolenaar <Bram@vim.org>
parents:
18269
diff
changeset
|
52 let a = split(execute('compiler')) |
22981
72e0ec552189
patch 8.2.2037: compiler test depends on list of compiler plugins
Bram Moolenaar <Bram@vim.org>
parents:
21765
diff
changeset
|
53 let exp = GetCompilerNames() |
72e0ec552189
patch 8.2.2037: compiler test depends on list of compiler plugins
Bram Moolenaar <Bram@vim.org>
parents:
21765
diff
changeset
|
54 call assert_match(runtime .. '/compiler/' .. exp[0] .. '.vim$', a[0]) |
72e0ec552189
patch 8.2.2037: compiler test depends on list of compiler plugins
Bram Moolenaar <Bram@vim.org>
parents:
21765
diff
changeset
|
55 call assert_match(runtime .. '/compiler/' .. exp[1] .. '.vim$', a[1]) |
72e0ec552189
patch 8.2.2037: compiler test depends on list of compiler plugins
Bram Moolenaar <Bram@vim.org>
parents:
21765
diff
changeset
|
56 call assert_match(runtime .. '/compiler/' .. exp[-1] .. '.vim$', a[-1]) |
13970
939cfab265b9
patch 8.1.0003: the :compiler command is not tested
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
57 endfunc |
939cfab265b9
patch 8.1.0003: the :compiler command is not tested
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
58 |
19348
b6da81589f8c
patch 8.2.0232: the :compiler command causes a crash
Bram Moolenaar <Bram@vim.org>
parents:
19289
diff
changeset
|
59 " Test executing :compiler from the command line, not from a script |
b6da81589f8c
patch 8.2.0232: the :compiler command causes a crash
Bram Moolenaar <Bram@vim.org>
parents:
19289
diff
changeset
|
60 func Test_compiler_commandline() |
b6da81589f8c
patch 8.2.0232: the :compiler command causes a crash
Bram Moolenaar <Bram@vim.org>
parents:
19289
diff
changeset
|
61 call system(GetVimCommandClean() .. ' --not-a-term -c "compiler gcc" -c "call writefile([b:current_compiler], ''XcompilerOut'')" -c "quit"') |
b6da81589f8c
patch 8.2.0232: the :compiler command causes a crash
Bram Moolenaar <Bram@vim.org>
parents:
19289
diff
changeset
|
62 call assert_equal(0, v:shell_error) |
b6da81589f8c
patch 8.2.0232: the :compiler command causes a crash
Bram Moolenaar <Bram@vim.org>
parents:
19289
diff
changeset
|
63 call assert_equal(["gcc"], readfile('XcompilerOut')) |
b6da81589f8c
patch 8.2.0232: the :compiler command causes a crash
Bram Moolenaar <Bram@vim.org>
parents:
19289
diff
changeset
|
64 |
b6da81589f8c
patch 8.2.0232: the :compiler command causes a crash
Bram Moolenaar <Bram@vim.org>
parents:
19289
diff
changeset
|
65 call delete('XcompilerOut') |
b6da81589f8c
patch 8.2.0232: the :compiler command causes a crash
Bram Moolenaar <Bram@vim.org>
parents:
19289
diff
changeset
|
66 endfunc |
b6da81589f8c
patch 8.2.0232: the :compiler command causes a crash
Bram Moolenaar <Bram@vim.org>
parents:
19289
diff
changeset
|
67 |
13970
939cfab265b9
patch 8.1.0003: the :compiler command is not tested
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
68 func Test_compiler_completion() |
22981
72e0ec552189
patch 8.2.2037: compiler test depends on list of compiler plugins
Bram Moolenaar <Bram@vim.org>
parents:
21765
diff
changeset
|
69 let clist = GetCompilerNames()->join(' ') |
13970
939cfab265b9
patch 8.1.0003: the :compiler command is not tested
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
70 call feedkeys(":compiler \<C-A>\<C-B>\"\<CR>", 'tx') |
22981
72e0ec552189
patch 8.2.2037: compiler test depends on list of compiler plugins
Bram Moolenaar <Bram@vim.org>
parents:
21765
diff
changeset
|
71 call assert_match('^"compiler ' .. clist .. '$', @:) |
13970
939cfab265b9
patch 8.1.0003: the :compiler command is not tested
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
72 |
939cfab265b9
patch 8.1.0003: the :compiler command is not tested
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
73 call feedkeys(":compiler p\<C-A>\<C-B>\"\<CR>", 'tx') |
24323
7759374c4464
patch 8.2.2702: compiler completion test fails when more scripts are added
Bram Moolenaar <Bram@vim.org>
parents:
23027
diff
changeset
|
74 call assert_match('"compiler pbx perl\( p[a-z]\+\)\+ pylint pyunit', @:) |
13970
939cfab265b9
patch 8.1.0003: the :compiler command is not tested
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
75 |
939cfab265b9
patch 8.1.0003: the :compiler command is not tested
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
76 call feedkeys(":compiler! p\<C-A>\<C-B>\"\<CR>", 'tx') |
24323
7759374c4464
patch 8.2.2702: compiler completion test fails when more scripts are added
Bram Moolenaar <Bram@vim.org>
parents:
23027
diff
changeset
|
77 call assert_match('"compiler! pbx perl\( p[a-z]\+\)\+ pylint pyunit', @:) |
13970
939cfab265b9
patch 8.1.0003: the :compiler command is not tested
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
78 endfunc |
939cfab265b9
patch 8.1.0003: the :compiler command is not tested
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
79 |
939cfab265b9
patch 8.1.0003: the :compiler command is not tested
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
80 func Test_compiler_error() |
19289
2f0f308c069c
patch 8.2.0203: :helptags and some other functionality not tested
Bram Moolenaar <Bram@vim.org>
parents:
18767
diff
changeset
|
81 let g:current_compiler = 'abc' |
13970
939cfab265b9
patch 8.1.0003: the :compiler command is not tested
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
82 call assert_fails('compiler doesnotexist', 'E666:') |
19289
2f0f308c069c
patch 8.2.0203: :helptags and some other functionality not tested
Bram Moolenaar <Bram@vim.org>
parents:
18767
diff
changeset
|
83 call assert_equal('abc', g:current_compiler) |
2f0f308c069c
patch 8.2.0203: :helptags and some other functionality not tested
Bram Moolenaar <Bram@vim.org>
parents:
18767
diff
changeset
|
84 call assert_fails('compiler! doesnotexist', 'E666:') |
2f0f308c069c
patch 8.2.0203: :helptags and some other functionality not tested
Bram Moolenaar <Bram@vim.org>
parents:
18767
diff
changeset
|
85 unlet! g:current_compiler |
13970
939cfab265b9
patch 8.1.0003: the :compiler command is not tested
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
86 endfunc |
21765
08940efa6b4e
patch 8.2.1432: various inconsistencies in test files
Bram Moolenaar <Bram@vim.org>
parents:
21721
diff
changeset
|
87 |
08940efa6b4e
patch 8.2.1432: various inconsistencies in test files
Bram Moolenaar <Bram@vim.org>
parents:
21721
diff
changeset
|
88 " vim: shiftwidth=2 sts=2 expandtab |