Mercurial > vim
annotate src/testdir/test_function_lists.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 | a52697bcffa6 |
children |
rev | line source |
---|---|
31140
a52697bcffa6
patch 9.0.0904: various comment and indent flaws
Bram Moolenaar <Bram@vim.org>
parents:
30552
diff
changeset
|
1 " Test to verify that the three function lists: |
20689
b005de48b374
patch 8.2.0898: missing help for a function goes unnoticed
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
2 " |
31140
a52697bcffa6
patch 9.0.0904: various comment and indent flaws
Bram Moolenaar <Bram@vim.org>
parents:
30552
diff
changeset
|
3 " - global_functions[] in src/evalfunc.c |
a52697bcffa6
patch 9.0.0904: various comment and indent flaws
Bram Moolenaar <Bram@vim.org>
parents:
30552
diff
changeset
|
4 " - *functions* in runtime/doc/builtin.txt |
a52697bcffa6
patch 9.0.0904: various comment and indent flaws
Bram Moolenaar <Bram@vim.org>
parents:
30552
diff
changeset
|
5 " - *function-list* in runtime/doc/usr_41.txt |
20689
b005de48b374
patch 8.2.0898: missing help for a function goes unnoticed
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
6 " |
31140
a52697bcffa6
patch 9.0.0904: various comment and indent flaws
Bram Moolenaar <Bram@vim.org>
parents:
30552
diff
changeset
|
7 " contain the same functions and that the global_functions and |
a52697bcffa6
patch 9.0.0904: various comment and indent flaws
Bram Moolenaar <Bram@vim.org>
parents:
30552
diff
changeset
|
8 " ":help functions" lists are in ASCII order. |
20689
b005de48b374
patch 8.2.0898: missing help for a function goes unnoticed
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
9 |
b005de48b374
patch 8.2.0898: missing help for a function goes unnoticed
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
10 func Test_function_lists() |
b005de48b374
patch 8.2.0898: missing help for a function goes unnoticed
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
11 |
b005de48b374
patch 8.2.0898: missing help for a function goes unnoticed
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
12 " Delete any files left over from an earlier run of this test. |
b005de48b374
patch 8.2.0898: missing help for a function goes unnoticed
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
13 call delete("Xglobal_functions.diff") |
b005de48b374
patch 8.2.0898: missing help for a function goes unnoticed
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
14 call delete("Xfunctions.diff") |
b005de48b374
patch 8.2.0898: missing help for a function goes unnoticed
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
15 call delete("Xfunction-list.diff") |
b005de48b374
patch 8.2.0898: missing help for a function goes unnoticed
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
16 |
b005de48b374
patch 8.2.0898: missing help for a function goes unnoticed
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
17 " Create a file of the functions in evalfunc.c:global_functions[]. |
b005de48b374
patch 8.2.0898: missing help for a function goes unnoticed
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
18 enew! |
b005de48b374
patch 8.2.0898: missing help for a function goes unnoticed
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
19 read ../evalfunc.c |
b005de48b374
patch 8.2.0898: missing help for a function goes unnoticed
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
20 1,/^static funcentry_T global_functions\[\] =$/d |
b005de48b374
patch 8.2.0898: missing help for a function goes unnoticed
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
21 call search('^};$') |
b005de48b374
patch 8.2.0898: missing help for a function goes unnoticed
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
22 .,$d |
b005de48b374
patch 8.2.0898: missing help for a function goes unnoticed
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
23 v/^ {/d |
b005de48b374
patch 8.2.0898: missing help for a function goes unnoticed
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
24 %s/^ {"// |
b005de48b374
patch 8.2.0898: missing help for a function goes unnoticed
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
25 %s/".*// |
b005de48b374
patch 8.2.0898: missing help for a function goes unnoticed
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
26 w! Xglobal_functions |
b005de48b374
patch 8.2.0898: missing help for a function goes unnoticed
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
27 |
b005de48b374
patch 8.2.0898: missing help for a function goes unnoticed
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
28 " Verify that those functions are in ASCII order. |
b005de48b374
patch 8.2.0898: missing help for a function goes unnoticed
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
29 sort u |
b005de48b374
patch 8.2.0898: missing help for a function goes unnoticed
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
30 w! Xsorted_global_functions |
b005de48b374
patch 8.2.0898: missing help for a function goes unnoticed
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
31 let l:unequal = assert_equalfile("Xsorted_global_functions", "Xglobal_functions", |
b005de48b374
patch 8.2.0898: missing help for a function goes unnoticed
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
32 \ "global_functions[] not sorted") |
b005de48b374
patch 8.2.0898: missing help for a function goes unnoticed
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
33 if l:unequal && executable("diff") |
b005de48b374
patch 8.2.0898: missing help for a function goes unnoticed
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
34 call system("diff -u Xsorted_global_functions Xglobal_functions > Xglobal_functions.diff") |
b005de48b374
patch 8.2.0898: missing help for a function goes unnoticed
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
35 endif |
b005de48b374
patch 8.2.0898: missing help for a function goes unnoticed
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
36 |
b005de48b374
patch 8.2.0898: missing help for a function goes unnoticed
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
37 " Create a file of the functions in evalfunc.c:global_functions[] that are |
b005de48b374
patch 8.2.0898: missing help for a function goes unnoticed
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
38 " not obsolete, sorted in ASCII order. |
b005de48b374
patch 8.2.0898: missing help for a function goes unnoticed
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
39 enew! |
b005de48b374
patch 8.2.0898: missing help for a function goes unnoticed
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
40 read ../evalfunc.c |
b005de48b374
patch 8.2.0898: missing help for a function goes unnoticed
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
41 1,/^static funcentry_T global_functions\[\] =$/d |
b005de48b374
patch 8.2.0898: missing help for a function goes unnoticed
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
42 call search('^};$') |
b005de48b374
patch 8.2.0898: missing help for a function goes unnoticed
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
43 .,$d |
b005de48b374
patch 8.2.0898: missing help for a function goes unnoticed
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
44 v/^ {/d |
b005de48b374
patch 8.2.0898: missing help for a function goes unnoticed
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
45 g/\/\/ obsolete$/d |
b005de48b374
patch 8.2.0898: missing help for a function goes unnoticed
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
46 %s/^ {"// |
b005de48b374
patch 8.2.0898: missing help for a function goes unnoticed
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
47 %s/".*// |
b005de48b374
patch 8.2.0898: missing help for a function goes unnoticed
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
48 sort u |
20693
f342bdc79295
patch 8.2.0900: function list test fails on MS-Windows
Bram Moolenaar <Bram@vim.org>
parents:
20689
diff
changeset
|
49 w! ++ff=unix Xsorted_current_global_functions |
20689
b005de48b374
patch 8.2.0898: missing help for a function goes unnoticed
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
50 |
b005de48b374
patch 8.2.0898: missing help for a function goes unnoticed
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
51 " Verify that the ":help functions" list is complete and in ASCII order. |
b005de48b374
patch 8.2.0898: missing help for a function goes unnoticed
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
52 enew! |
26780
b24b2217ff9e
patch 8.2.3918: function list test fails
Bram Moolenaar <Bram@vim.org>
parents:
24840
diff
changeset
|
53 if filereadable('../../doc/builtin.txt') |
24570
27033b8bba0e
patch 8.2.2824: MS-Windows: build failure with MSVC
Bram Moolenaar <Bram@vim.org>
parents:
20693
diff
changeset
|
54 " unpacked MS-Windows zip archive |
26780
b24b2217ff9e
patch 8.2.3918: function list test fails
Bram Moolenaar <Bram@vim.org>
parents:
24840
diff
changeset
|
55 read ../../doc/builtin.txt |
24570
27033b8bba0e
patch 8.2.2824: MS-Windows: build failure with MSVC
Bram Moolenaar <Bram@vim.org>
parents:
20693
diff
changeset
|
56 else |
26780
b24b2217ff9e
patch 8.2.3918: function list test fails
Bram Moolenaar <Bram@vim.org>
parents:
24840
diff
changeset
|
57 read ../../runtime/doc/builtin.txt |
24570
27033b8bba0e
patch 8.2.2824: MS-Windows: build failure with MSVC
Bram Moolenaar <Bram@vim.org>
parents:
20693
diff
changeset
|
58 endif |
20689
b005de48b374
patch 8.2.0898: missing help for a function goes unnoticed
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
59 call search('^USAGE') |
b005de48b374
patch 8.2.0898: missing help for a function goes unnoticed
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
60 1,.d |
26780
b24b2217ff9e
patch 8.2.3918: function list test fails
Bram Moolenaar <Bram@vim.org>
parents:
24840
diff
changeset
|
61 call search('^==========') |
20689
b005de48b374
patch 8.2.0898: missing help for a function goes unnoticed
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
62 .,$d |
b005de48b374
patch 8.2.0898: missing help for a function goes unnoticed
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
63 v/^\S/d |
b005de48b374
patch 8.2.0898: missing help for a function goes unnoticed
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
64 %s/(.*// |
b005de48b374
patch 8.2.0898: missing help for a function goes unnoticed
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
65 let l:lines = getline(1, '$') |
b005de48b374
patch 8.2.0898: missing help for a function goes unnoticed
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
66 call uniq(l:lines) |
b005de48b374
patch 8.2.0898: missing help for a function goes unnoticed
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
67 call writefile(l:lines, "Xfunctions") |
b005de48b374
patch 8.2.0898: missing help for a function goes unnoticed
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
68 let l:unequal = assert_equalfile("Xsorted_current_global_functions", "Xfunctions", |
b005de48b374
patch 8.2.0898: missing help for a function goes unnoticed
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
69 \ "\":help functions\" not sorted or incomplete") |
b005de48b374
patch 8.2.0898: missing help for a function goes unnoticed
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
70 if l:unequal && executable("diff") |
b005de48b374
patch 8.2.0898: missing help for a function goes unnoticed
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
71 call system("diff -u Xsorted_current_global_functions Xfunctions > Xfunctions.diff") |
b005de48b374
patch 8.2.0898: missing help for a function goes unnoticed
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
72 endif |
b005de48b374
patch 8.2.0898: missing help for a function goes unnoticed
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
73 |
b005de48b374
patch 8.2.0898: missing help for a function goes unnoticed
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
74 " Verify that the ":help function-list" list is complete. |
b005de48b374
patch 8.2.0898: missing help for a function goes unnoticed
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
75 enew! |
24570
27033b8bba0e
patch 8.2.2824: MS-Windows: build failure with MSVC
Bram Moolenaar <Bram@vim.org>
parents:
20693
diff
changeset
|
76 if filereadable('../../doc/usr_41.txt') |
27033b8bba0e
patch 8.2.2824: MS-Windows: build failure with MSVC
Bram Moolenaar <Bram@vim.org>
parents:
20693
diff
changeset
|
77 " unpacked MS-Windows zip archive |
27033b8bba0e
patch 8.2.2824: MS-Windows: build failure with MSVC
Bram Moolenaar <Bram@vim.org>
parents:
20693
diff
changeset
|
78 read ../../doc/usr_41.txt |
27033b8bba0e
patch 8.2.2824: MS-Windows: build failure with MSVC
Bram Moolenaar <Bram@vim.org>
parents:
20693
diff
changeset
|
79 else |
27033b8bba0e
patch 8.2.2824: MS-Windows: build failure with MSVC
Bram Moolenaar <Bram@vim.org>
parents:
20693
diff
changeset
|
80 read ../../runtime/doc/usr_41.txt |
27033b8bba0e
patch 8.2.2824: MS-Windows: build failure with MSVC
Bram Moolenaar <Bram@vim.org>
parents:
20693
diff
changeset
|
81 endif |
20689
b005de48b374
patch 8.2.0898: missing help for a function goes unnoticed
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
82 call search('\*function-list\*$') |
b005de48b374
patch 8.2.0898: missing help for a function goes unnoticed
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
83 1,.d |
b005de48b374
patch 8.2.0898: missing help for a function goes unnoticed
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
84 call search('^==*$') |
b005de48b374
patch 8.2.0898: missing help for a function goes unnoticed
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
85 .,$d |
b005de48b374
patch 8.2.0898: missing help for a function goes unnoticed
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
86 v/^\t\S/d |
b005de48b374
patch 8.2.0898: missing help for a function goes unnoticed
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
87 %s/(.*// |
b005de48b374
patch 8.2.0898: missing help for a function goes unnoticed
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
88 %left |
b005de48b374
patch 8.2.0898: missing help for a function goes unnoticed
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
89 sort u |
20693
f342bdc79295
patch 8.2.0900: function list test fails on MS-Windows
Bram Moolenaar <Bram@vim.org>
parents:
20689
diff
changeset
|
90 w! ++ff=unix Xfunction-list |
20689
b005de48b374
patch 8.2.0898: missing help for a function goes unnoticed
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
91 let l:unequal = assert_equalfile("Xsorted_current_global_functions", "Xfunction-list", |
24840
c7aa7acb23bb
patch 8.2.2958: function list test fails
Bram Moolenaar <Bram@vim.org>
parents:
24570
diff
changeset
|
92 \ "\":help function-list\" incomplete") |
20689
b005de48b374
patch 8.2.0898: missing help for a function goes unnoticed
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
93 if l:unequal && executable("diff") |
b005de48b374
patch 8.2.0898: missing help for a function goes unnoticed
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
94 call system("diff -u Xsorted_current_global_functions Xfunction-list > Xfunction-list.diff") |
b005de48b374
patch 8.2.0898: missing help for a function goes unnoticed
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
95 endif |
b005de48b374
patch 8.2.0898: missing help for a function goes unnoticed
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
96 |
b005de48b374
patch 8.2.0898: missing help for a function goes unnoticed
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
97 " Clean up. |
b005de48b374
patch 8.2.0898: missing help for a function goes unnoticed
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
98 call delete("Xglobal_functions") |
b005de48b374
patch 8.2.0898: missing help for a function goes unnoticed
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
99 call delete("Xsorted_global_functions") |
b005de48b374
patch 8.2.0898: missing help for a function goes unnoticed
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
100 call delete("Xsorted_current_global_functions") |
b005de48b374
patch 8.2.0898: missing help for a function goes unnoticed
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
101 call delete("Xfunctions") |
b005de48b374
patch 8.2.0898: missing help for a function goes unnoticed
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
102 call delete("Xfunction-list") |
b005de48b374
patch 8.2.0898: missing help for a function goes unnoticed
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
103 enew! |
b005de48b374
patch 8.2.0898: missing help for a function goes unnoticed
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
104 |
b005de48b374
patch 8.2.0898: missing help for a function goes unnoticed
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
105 endfunc |
b005de48b374
patch 8.2.0898: missing help for a function goes unnoticed
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
106 |
b005de48b374
patch 8.2.0898: missing help for a function goes unnoticed
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
107 " vim: shiftwidth=2 sts=2 expandtab |